回复 8楼 莣忧
int main()
{
int a = 10, b = 11;
int *p1, *p2,
temp;
p1 = &a;
p2 = &b;
temp = *p1;
*p1 = *p2;
*p2 = temp;
printf("a=%d,b=%d\n", a, b);
printf("p1=%d,p2=%d\n", *p1, *p2);
return 0;
}
在这里我不懂为什么a,b的值会互调?
int main()
{ int a=10,b=11;
int *p1,*p2
,*temp;
p1=&a;
p2=&b;
temp=p1;
p1=p2;
p2=temp;
printf("p1=%d,p2=%d\n",*p1,*p2);
printf("a=%d,b=%d\n",a,b);
}
主要点:第一个team是定义为‘整型’但不是指针变量。第二个函数定义team时,前面多了‘*’ 也就是定义为‘整型的指针变量’,俩个函数中的p1,p2都是指针变量。
第一个函数
temp = *p1;
*p1 = *p2;
*p2 = temp;
第二个函数
temp=p1;
p1=p2;
p2=temp;
第一个函数的team是整型,接收的是*p1的值。而*p1等同于a.相当于team=a.所以就把a的值与b对换了。
而第二个函数的team为指针变量,储存的是a变量的地址而不是a变量的值。
做转换时是把p1储存的a的地址与p2储存的b的地址对换。结果是a的
地址存放在了p2里,而b的
地址存放在了b1里。而不是a与b的值对换。
希望你能看懂~