设有定义: int n1=0,n2,*p=&n2,*q=&n1; 以下赋值语句中与n2=n1:语句等价的是 A.*p=*q; B.p=q; C.*p=&n1;

D.p=*q;请详细解释下每个选项
2025-04-13 12:20:06
推荐回答(3个)
回答1:

n2=n1 是将n1的值赋值给n2,与变量地址无关,因此去除所有对指针操作不带*的选项 B D

C.*p=&n1;是将n1的地址值赋值给p,即p指向n1,与n2无关。 &是取变量地址操作符

A.*p=*q; 正确,通过n1的地址q,提取数据n1的值,赋值给由p所指向的n2的地址

指针变量中存的是地址值,通过地址值可以访问相应的数据,操作时变量前加*

回答2:

答案必然是A 呀。B 中,p = q 两个都是指针,指针间复制,和n2 = n1显然不同啦, C 中 *p 等价于n2,但是 &n1是一个指针,相当于把指针赋值给整形值。。。 D 中 *q 等价于n1, 但是p 是指针, 这个是把 整形赋值给了 指针。。。 这个必然也不对。 *p 和n2 是等价的,*q 和n1是等价的。

回答3:

楼上说的对,A选项,我再补充一下,*p和*q是通过n1、n2地址获取到数据的,所以当n1、n2改变时*p、*q的值也会随着改变