mai() {int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int)); *a=1;*b=2;*c=3;a=b;printf("%d,%d,%d",*a,*b,*c运行后的结果是3,3,3 这是怎么得出的结果?

问题描述:

mai() {int *a,*b,*c; a=b=c=(int*)malloc(sizeof(int)); *a=1;*b=2;*c=3;a=b;printf("%d,%d,%d",*a,*b,*c
运行后的结果是3,3,3 这是怎么得出的结果?

int *a,*b,*c;这个是定义三个指向int的指针.
a=b=c=(int*)malloc(sizeof(int)); 分配一个保存int的空间.相当于这个时候a,b,c是指向内存中同一个空间的.
*a=1;*b=2;*c=3;a=b;
执行*a = 1时,*b,*c也都是1
同样的执行*b = 2时,*a,*c也都是2
最后*c=3;,*a,*b也都是3
因为它们三个指向的是同一个空间.所以取值是相同的.
仍有问题可以HI我.