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 这是怎么得出的结果?求高手指点一下
2025-03-09 12:01:31
推荐回答(2个)
回答1:

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我。。。

回答2:

abc三个指针指向的是同一块内存,所以只要其中一个变了,其他两个会一起跟着变,*a=1;*b=2;*c=3;最后变成了3,后面那个a=b即使没有,结果依然还是333,因为再执行a=b之前,其实a和b所指的内容就已经相等了