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

哪位大神能给我讲一下指向数组的指针,数组中的只可以有多少中表示方法?分别是什么?例如:int*p,a[10];p=a;我要是表示a【i】可以有几种表示方法?p=a代表什么... 哪位大神能给我讲一下指向数组的指针,数组中的只可以有多少中表示方法?分别是什么?
例如:int *p,a[10];
p=a;我要是表示a【i】可以有几种表示方法?p=a代表什么意思?p++?等等这些问题,谢谢了。
展开
 我来答
轻盈还清静的小比目鱼5
2013-12-18 · TA获得超过228个赞
知道答主
回答量:21
采纳率:0%
帮助的人:40.8万
展开全部
首先你要明白一点,数组名和指针本质上是一回事,都是地址,该数组的首地址。知道这一点后就可以活学活用了。这是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。
kxykk
2013-12-18 · TA获得超过232个赞
知道小有建树答主
回答量:143
采纳率:50%
帮助的人:91.1万
展开全部
由于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]也是完全等价,你可以试试
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
yf798590105
2013-12-18 · TA获得超过165个赞
知道答主
回答量:142
采纳率:0%
帮助的人:76.7万
展开全部
*p *a p=a表示把数组的第一个地址赋值给指针p 这样指针就指向数组了 p++表示指针p地址加1 这样就指向后一个地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
幼_影
2013-12-18
知道答主
回答量:4
采纳率:0%
帮助的人:2.8万
展开全部
a[i] 的表示可以为:*(a+i) a[i] 我记得的就只有这两种
p=a 代表 p指针指向a数组的首地址
p++ 表示 使p指针指向它的下一个元素 比如,原本p指向a[i],则p++后p指向的是a[i+1]
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式