|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
请教:
我想实现的功能是在子函数内互换两数值,在子函数内通过指针来实现的:
- #include <stdio.h>
- void voluetion(int * px,int * py)
- {
- int *z ;
- *z = *px;
- *px = *py;
- *py = z;
- }
- void main(void)
- {
- int x = 10;
- int y = 20;
- printf("调用函数之前x的值:%d\n",x);
- printf("调用函数之前y的值:%d\n",y);
- voluetion(&x,&y);
- printf("调用函数之前x的值:%d\n",x);
- printf("调用函数之前y的值:%d\n",y);
- }
复制代码
上述代码编译的时候没有错,但是运行的时候会停止工作,是*z的问题,调试显示 cxx 0030:错误:表达式不能计算cxx 0030:错误:表达式不能计算
- #include <stdio.h>
- void voluetion(int * px,int * py)
- {
- int z ;
- z = *px;
- *px = *py;
- *py = z;
- }
- void main(void)
- {
- int x = 10;
- int y = 20;
- printf("调用函数之前x的值:%d\n",x);
- printf("调用函数之前y的值:%d\n",y);
- voluetion(&x,&y);
- printf("调用函数之前x的值:%d\n",x);
- printf("调用函数之前y的值:%d\n",y);
- }
复制代码
将指针类型的变量z换成整数类型的变量z,就会顺利运行
问:这是为什么啊?第一个程序指针类型的变量z,在给z地址内赋值的时候使用*z不是也是可以将*px的值赋到z地址内吗,效果应该是将*p的值赋给整型变量z是一样的啊
写错了:
int *z = (int*)malloc(sizeof(int));这样
|
|