作业帮 > 综合 > 作业

设有定义:int n=0,*p=&n,**q=&p,则下列赋值语句哪个是正确的?A.p=1;B.*q=2;C.q=p;D

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/16 14:32:12
设有定义:int n=0,*p=&n,**q=&p,则下列赋值语句哪个是正确的?A.p=1;B.*q=2;C.q=p;D.*p=5;
为什么是D,
答案是D
n,p,q这三者的关系如图所示.
A错.p是指针,它里面存放的是地址值,而1是整数,类型不符,不能赋值.
B错.q是指向指针的指针,*q相当于写成p一样.错误情况参考A的解释
C错.p是指向整型变量的指针(一级指针),可以存放整型变量的地址.而q是指向指针的指针(二级指针),可以存放另一个一级指针变量(如p指针)的地址,但不能存放整型变量的地址.此句相当于写成了:q=&n.