7.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( ).A) p=1; B) *q=2; C) q=p; D) *pD.*P=5.我不是很理解这一题,*p不是取n的地址么?后面也是,不是很理解题目的意思,基础有点差.

问题描述:

7.设有定义:int n=0,*p=&n,**q=&p;则以下选项中,正确的赋值语句是( ).A) p=1; B) *q=2; C) q=p; D) *p
D.*P=5.
我不是很理解这一题,*p不是取n的地址么?后面也是,不是很理解题目的意思,基础有点差.

n是整数,p是整数指针,q是双重指针.
A:p=1 属于将地址1赋给p,非法.
B:*q=2 这里*q相当于一个整数指针,问题同上,非法.
C:q=p 相当于把p的地址赋给q,不能说错,但是不同维数的指针互相赋值,容易出错.
以上三种都是编译没有问题.
D比较符合规范而已.