作业帮 > 综合 > 作业

p1=p2; \\p1 的指针指向 p2,意味着p2值改变,p1值也改变

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/13 12:12:46
p1=p2; \\p1 的指针指向 p2,意味着p2值改变,p1值也改变
p1=p2;\\我想是p1指向改变了,即p1不再指向原变量的地址,改为指向p2所指向的地址.那为什么p2的值也会变呢?
#include
void swap(int *p1,int *p2)
{
int *t;
t=*p1;
p1=p2;
*p2=t;
}
void main()
{ int a=1,b=3,*p=&a,*q=&b;
swap(&p,&q);
printf("%d,%d,%d,%d\n",a,b,*p,*q);
}
执行 p1=p2 后,可以认为 p1 就是 p2,因为 p1 已经放弃了原有的指向,指向了新的地址 p2,此时,无论改变 *p1 还是 *p2 ,都是改变 p2 指向的内存;原 p1 指向的内存,在函数中就无法访问了.
void swap(int *p1,int *p2)
{
int *t;
t=*p1;
p1=p2; //错误,应该改成 *p1 = *p2;
*p2=t;
}