1 #include<stdio.h> 2 { 3 int a= 100,b=10; 4 int *p1=&a,*p2=&b; 5 *p1=b; 6 *p2=a; 7 printf("%d,%d,",a,b); 8 printf("%d,%d",*p1,*p2) 9 }
请问此时输出的值为多少?
a 10
b 10
*p1 10
*p2 10
分析思路:首先指针*p1,*p2分别获取到a和b的地址空间
然后对指针*p1赋值 *p1=b=10 因为*p1指向的是a的地址空间,改变*p1的值意味着a也被重新赋值了
所以当*p2赋值为a时,此时的a为10;