初学C语言,指针的困惑
在看谭浩强的C程序设计,说道一个函数进行数据交换,应该是这样
swap(int *p1,int *p2)
{
int temp;
temp=*p1;
*p1=*p2;
*p2=temp;
}
还是能读懂
可是下面这代码就很困惑了
swap(int *p1,int *p2)
{
int *temp;
*temp=*p1; /*此语句有问题*/
*p1=*p2;
*p2=temp;
}
困惑的就是:
int *temp;
*temp = *p1; 自己理解的是把p1指针对应的数据赋给tmep指针对应的值,这样应该是没什么问题啊
可是通过VC编译执行时却出错,很是不理解
或者说
int *temp;
然后没给这个temp一个具体的地址指向,然后这时候通过指针操作符“*”即 *temp时会出错?
希望大侠们能够比较具体细致的说下 *temp 这时候是个什么样子的状态,谢谢!
[解决办法]
int *temp;
temp指针不知道往哪里指,即没有指向某个内存地址,*p1是指针p1指向地址的数据,*temp=*p1就是把*p1指向的内存地址数据的值赋给temp指向的地址存储,但是temp不知道指向了哪里,编译器不知道把这个值放在内存的什么地方