多个异名同地址的变量,用指针仅操作其中一个会引起其它所有变量的改变。
例如下面代码的第10行。
#include "stdafx.h"
void fun(int *a, int *b, int *c)
{
int *temp;
temp = a; // a-&a-5, b-&b-7, c-&c-3, t-&a-5
a = b; // a-&b-7, b-&b-7, c-&c-3, t-&a-5
b = temp; // a-&b-7, b-&a-5, c-&c-3, t-&a-5
*temp = *b; // a-&b-7, b-&a-5, c-&c-3, t-&a-5
*b = *c; //★ a-&b-7, b-&a-3, c-&c-3, t-&a-3
*c = *temp; //a-&b-7, b-&a-3, c-&c-5, t-&a-3
}
int main()
{
int a, b, c, *p1, *p2, *p3;
a = 5;
b = 7;
c = 3;
p1 = &a;
p2 = &b;
p3 = &c;
fun(p1, p2, p3);
printf("%d,%d,%d\n", a, b, c); //3 7 3
return 0;
}
=