问题
单项选择题
有以下程序
#include< stdio.h>
#include< stdlib.h>
main()
int *a, *b, *c;
a=b=c=(int *)malloc(sizeof(int);
*a=1; *b=2, *c=3;
a=b;
printf("%d, % d, % d\n", $a, $b, $c);
程序运行后的输出结果是
A) 3, 3, 3
B) 2, 2, 3
C) 1, 2, 3
D) 1, 1, 3
答案
参考答案:A
解析: 根据程序可以分析出系统只分配了一个整型数据的存储空间,把这个空间的地址分别赋给了指针型变量a、b和c。程序利用指针a把数据1写入了该空间,然后利用指针b,把数据2写入该空间,所以原来的1就被覆盖掉,最后用指针c把数据3写入该空间把数据2覆盖掉了,此空间中最后留有的数据是3。因为3个指针都指向该空间,所以输出数据均为3。