首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C语言 >

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

2012-03-31 
初学C语言,指针的困惑在看谭浩强的C程序设计,说道一个函数进行数据交换,应该是这样swap(int *p1,int *p2){

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

热点排行