单选题 有以下程序: #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); } 程序运行后的输出结果是( )。
【正确答案】 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。