有以下程序: #include #include void main( ) {int*a,*b,*c; a=b=c=malloc(sizeof(int)); a=0;*b=1;*c=2: a=b; printf(’’%d,%d,%d\n

admin2021-04-28  25

问题 有以下程序:
#include
#include
void main(    )   
{int*a,*b,*c;   
a=b=c=malloc(sizeof(int));
a=0;*b=1;*c=2:
a=b;
printf(’’%d,%d,%d\n’’,*a,*b,*c);
}
程序运行后的输出结果是(  )。

选项 A、出错
B、2,2,3
C、1,2,3
D、2,2,2

答案D

解析 malloc(sizeof)将分配一块存放整型数据的内存地址,a,b,c三个整型指针同时指向这个地址;a=0是让a指针指向地址为1的内存空间(0x1),*b=1是指将b指针指向的这个内存空间的数值写成1,水c=2是指将c指针指向的这个内存空间的值写成2,因为b和c指向的是同一个内存空间。因此,它们指向的这个空间的值将会是2;a=b是将a指针也指向b指针指向的这个内存空间,所以a,b,c又都指向了开始分配的这个内存空间,其值为2,所以答案为D。
转载请注明原文地址:https://kaotiyun.com/show/1Wtp777K
0

最新回复(0)