马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
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));这样
|