C语言指针部分选择题

a[p-a]是什么意思??B是什么意思?麻烦解释详细点... a[p-a]是什么意思?? B是什么意思?麻烦解释详细点 展开
 我来答
x120765121
2011-04-12 · TA获得超过701个赞
知道小有建树答主
回答量:144
采纳率:0%
帮助的人:44.7万
展开全部
D是错误的,要弄清楚这个问题,首先我们要知道指针的本质是什么
指针是个存着地址的变量,因为我们每定义一个变量,内存就会给他分配空间,那么每个变量必须会有一个存储他的地方,我们称为地址,他指向谁,里面就存着谁的地址。如题*p=a;
此时p里面存的是数组a的首地址(记住这一点),还可以用取地址符&获取变量的地址,如&a[i];表示的是数组中第i个元素a[i]的地址。变量的值可以用*号获取。* 后面加一个地址,表示这个地址里面的数值(也记住,很重要)。开始做题
A中,前面我们已经将p赋值为a的首地址,同理a也可以表示数组的首地址(不知道的话翻书),就是说此时他们的都表示首地址(这是关键),也就是他们的值是一样的,这里*p=a,,p-a为0.所以,a[p-a] = a[0];是正确的。
B中,记得前面说过的,取地址符也可以获得地址,那么我们可以知道&a[i],是表示a[i]的地址(不是数值,是地址),这样就很明了了,*(&a[i]),不就是一个* 后面跟一个地址吗?对的,没错,那么他表示的就是地址里面的数据了.因此 B选项就 ,*(&a[i]) =a[i],是正确的
C 你懂的,不懂的话再问我。
我们来说说D
前面我们说过a可以表示数组a的首地址,我们可以通过给地址加1来获取下一个数组中的值,
首先我们用p来表示地址。*p =a ,那么*(p+1) = a[1],*(p+2) = a[2],因此用a也是一样的*(a+1) =a[1]; 同理*(a+i) = a[i], 这个时候你应该知道了。既然a[i]是一个数值,不是一个地址,那么
*(*(a+i)) = *a[i],是没有意义的。是个错误的引用。
祝你进步!
吾尝终日而思
2011-04-12 · TA获得超过1万个赞
知道大有可为答主
回答量:1276
采纳率:0%
帮助的人:742万
展开全部
D是错误的。
A中,p-a就是指针的运算。这里*p=a,所以p的值(是个地址)与a的值(是个地址)是相同的,p-a为0.
B中,a[j]是a中的一个数据,&就是取地址,再加一个*就是取值,所以*(&a[j])就等价于a[j]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
dongyue2008
2011-04-12 · TA获得超过3602个赞
知道大有可为答主
回答量:1300
采纳率:100%
帮助的人:587万
展开全部
B项,*(&a[i]),其实就相当于 a[i]。 & 是取地址符, &a[i] 就代表 a[i] 的地址。“* +地址”表示取该地址位置存放的值,所以 *(&a[i]) 中,* 和 & 抵消掉了,就相当于 a[i]。
当然答案选 D。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式