有一程序:
/*交换两个数的值*/
#include <stdio.h>
void swap(int *x,int *y)
{ int *temp;
*temp=*x; /*这里temp 为一定义的整型指针,可是还没被赋
值,也就是说里面没有存放地址,为何可以用此语句?可以的
话,是什么意思呢?*/
*x=*y;
*y=*temp;
}
main()
{ int a=10,b=20;
swap(&a,&b);
printf(“a=%d,b=%d\n”,a,b);
}
>> 本文固定链接: http://www.vcgood.com/archives/3211
定义指针的时候最好还是赋值 最好赋NULL 这样就安全 在一个那个是 把x的值赋给temp
这是谭老头书上的经典错误例题呀!
*temp是指针变量temp所指向的变量,但temp中并无确定的值(它的值是不可预见的),因此temp所指向的单元也是不可预见的。所以,对*temp赋值有可能给一个存储着重要的数据的存储单元赋值,这样就会破环系统的正常工作状况。