c语言指针指向数组的问题。

 我来答
祝升荣容泓
2019-10-07 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:587万
展开全部
首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是c语言的精髓。
比如你定义了int
*p,a[10];并且让p=a;,
这个操作叫做指针p指向了数组a,其本质是给p这个变量付了一个值,就是数组a的地址,也是a[0]的地址,也是a本身里面存储的内容。
那么要引用a[i],你可以有很多种写法,比如*(a+i),
*(p+i),
p[i],都是等效的。
p++的含义其实不是p=p+1,至少有时不是,p++的操作其实是让p指向下一个元素,也就是原来p指向的是a[0],那么现在p指向a[1]了。由于a是int类型,站4个字节,那么p++这个操作其实是让p的内容增加了4。不要问为什么,c语言就是这么规定的。如果p指向的是一个char类型,那么p++就使p的值增加1。
邱茉莉能阳
2019-07-01 · TA获得超过2.9万个赞
知道大有可为答主
回答量:1.1万
采纳率:27%
帮助的人:779万
展开全部
由于p是指针,所以p=a表示指向了这个数组的首元素地址,p++当然就表示指向下一个
如果要表示a[i]的话,
最常用a[i],也可以*(a+i),也可以是*(p+i)
C语言规定:表达式1[表达式2]与
*((表达式1)+(表达式2))完全等价,也可以说
a[b]与b[a]也完全等价,也就是说a[i]和i[a]也是完全等价,你可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
禹俊明寿庸
2019-10-05 · TA获得超过3万个赞
知道大有可为答主
回答量:1.1万
采纳率:34%
帮助的人:855万
展开全部
*p
*a
p=a表示把数组的第一个地址赋值给指针p
这样指针就指向数组了
p++表示指针p地址加1
这样就指向后一个地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式