问一题简单的C语言选择题

来源:百度知道 编辑:UC知道 时间:2024/06/17 18:28:36
(21)设有定义:int n=0,*p=&n,**q=&p,则下列选项中正确的赋值语句是
A)p=1;
B)*q=2;
C)q=p;
D)*p=5;
答案是D,但是*p已经为n的地址了,又等于5是什么意思啊

你好

一楼的理解是错误的,我给你分析一下
(1)int n=0,*p=&n,**q=&p,相当于:int n=0;
int *p=&n;
int **q=p;

(2)很显然p是一个指针变量,既然它是一个变量,它就存放了一个地址,这个地址实际上也就是n在内存中的被存放位置。

(3)*p,注意这个*号与定义指针变量时的*号是不一样的,这个*号它是一个运算符,*p运算的结果就是找到它所指的int变量,也就是找到变量n,这样你就知道*p=5;实际上就等于n=5

好了祝你好运!

*p=5,就等价于n=5啊
*p=5就是说,p指针指的地址里的值赋为5

*p是n的引用,不是n的地址.

p的值才是n的地址.

你搞错了,*p不是n的地址,p才是,定义中的*p=&n的*和赋值语句中的*的意义是不同的,定义中的*p=&n的意思是p是一个指针,p的值为&n,而赋值语句中的*p的意思是p所指的变量。

又重新赋值进去赛