读书人

初学C语言指针的困惑解决方法

发布时间: 2012-03-31 13:13:26 作者: rapoo

初学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不知道指向了哪里,编译器不知道把这个值放在内存的什么地方

读书人网 >C语言

热点推荐