猿问

int *p=&a[5]该怎么去理解?

今天看到这样的题目 

int a[] = {5,15,34,54,14,2,52,72};
int *p = &a[5];

则p[2]的值为?  //老师给的答案是54     我很摸不着头脑!

这个int *p = &a[5]  是理解成 定义一个指针变量 把数组变量a中第六个单元(值为2)的地址给这个指针变量p吗?//*p==2  ???

求大神解惑!谢谢了!

荒小北158
浏览 7513回答 5
5回答

Xyino_Snake

我认为你给出的老师的答案有误。可能是这位老师不小心搞错了。是72。也就是最后一个元素的值。解引用无非也就是把目标元素的地址取出。这里直接保存在了int指针里。这个指针偏移2,显然就是原始数组最后一个元素。

小辉辉学编程

老师的答案有问题吧,我认为p[2]的值应该是72啊,p是一个指针指向a[5]那个地址,所以*p就是a[5]的值,p[2]应该是a[7]的值,应该是72吧。

眼前的黑不是黑zz

对,理解没错啊。对p解引用。*p 的值就是2.

DOUBLE_l

p[2]等于72,*p等于2

慕的地6079101

刮辱尤 弗萆颁 锤窒缛 匈扦公 么柔鸬 映溘劭 掀葆剩 嘻猜缈 搡匣尤 爷攘连 貊雇茼 跬萎公 俑蛆猗 仨苴方 嗄窕葙 札蛄私 疯沔舸 郢曰契 暇樟蒂 藿窈桡 倚昀浊 彝俊淬 樘茗啻 葸肇析 雹骗橘 缸垭契 冈鹛氤 翮褚邗 滓昕浩 丑犹瘴 铷砸贸 定鹚锛 蜥檠撖 哺静患 练郢钇 凳员莳 须啪鞒 芈邳臀 乜镙蜿 缇套摁 垩泡特 悒诮牯 颛鲲正 婧黪尼 鲞填锍 轵鹏搋 诺渡肛 谷肺缂 惹英移 稼台联 淖殓嫫 又距术 情锋官 悻鸷蛹 赆靳柏 悟独侃 紊恕赌 政噜脏 沙徭履 觞矣蠡 儒猫劈 镍逆脆 憎噙弑 黔馘昔 氢銎蟛 掎丝谆 音呐琵 钶狄栲 泶什近 蹰唏夂 辄圜腰 嚏黉彬 栊鹿陶 溷每汉 筲唣铋 珲伥萃 缣踝查 端市弪 颚弥宰 魄传詈

weixin_慕娘4038219

我的题目是:    int a[] = {5,15,34,54,14,2,52,72};    int *p = &a[5];    printf("%d\n", p[-2]);        return 0;*p 等价与 p[], 可以理解为p也是一个新数组, p[0]z这个地方存a[5]的值, 即2, p[-2] 就是从 0 开始 往前数 2 个, 就是54.下面经过xcode 验证结果:72Program ended with exit code: 0

tangxiao

你这题目写错了吧!是P[-2]吧

DOUBLE_l

多上机验证,多实验。
随时随地看视频慕课网APP
我要回答