各位大虾帮我解释下下面有关指针的程序
void swap(int *p1,int *p2)
{int *temp;
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
主函数将整形变量a,b的值分别传递给*p1,*p2。
为什么书上说“*temp=*p1”这句话有问题,我觉得在程序中已经声明了temp我整形的指针变量则“*temp=*p1”这句话是对的。
参考答案:int *temp;
*temp=*p1; //这是错误的...
1楼的没睡好觉??
int * temp;//没有分配内存
*temp=*p1;//给一个未明确定义的内存赋值....后果不堪设想
如果改成:
void swap(int *p1,int *p2)
{
int buff = 0;
int * temp = & buff;//就是给 temp 一个指定的内存
*temp=*p1;
*p1=*p2;
*p2=*temp;
}
//还是能达到效果的,所以不是方式的问题