C语言的行指针与元素指针有什么区别?

 我来答
妖宾H
推荐于2018-02-27 · TA获得超过142个赞
知道答主
回答量:44
采纳率:0%
帮助的人:0
展开全部
先举个例子吧,先定义一个二维数组int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
数组名a就是一个行指针,a[0]就是一个列指针;
就拿这个例子说吧,a和a[0]虽然地址相同,可是指针指向类型却不同,对指针进行+1运算,显然得到的结果是不同的,因此a(行指针)+1中的"1”代表一行中全部元素所占的字节数,而a[0]+1,这里的1则是一个元素所占的字节数,是两个不同的概念。
为了说明这个容易搞混的问题,可以用军训中排队点名来说明。班长逐个检查本班战士是否在队列中,班长每移动一步,走过一个战士,而排长点名只检查本排各各班是否到齐。排长只从第0班的起始位置走到第1个班的起始位置,看来只走了一步,但实际上他跳过了10个战士,这相当于a+1,班长面对的战士,排长面对的是班,班长相当对列指针,排长相当于行指针。
为了找到某个班内的某一个战士,必须给出两个参数

参考资料: 谭浩强C程序设计

pengzhanguan0
2010-12-11
知道答主
回答量:13
采纳率:0%
帮助的人:0
展开全部
行指针是指向一行的,假设指针为P,那么P++就向下移m*d(m为那一行的元素个数,d每个元素占的内存单元)
指向元素的指针 P,那么P++就是指向下一个元素
也就是说P移动的字节不一样
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
键盘雀跃
推荐于2018-12-17 · TA获得超过981个赞
知道小有建树答主
回答量:1546
采纳率:0%
帮助的人:482万
展开全部
int a[4]={1,2,3,4}
1 2 3 4
^ ^
a[0] a[1] a[2] a[3]
a是一维数组名,代表数组的首地址.也就是a[0]
*(a+1) 指针移动2个字节,指向下一个数组元素,就是a[1]

int a[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}}
^ ^
*a[4] 或a[][4] 或a[3][4] 都可以表示行指针.
操作
a是二维数组名,代表二维数组的首地址,也就是a[0][0] = 1
*(a+1)[4] 指针指向a[1][0] = 5 ,也就是指向下一行数组元素的首地址.一次跳跃到下一行.
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
tattackor
推荐于2016-09-26 · TA获得超过3.5万个赞
知道大有可为答主
回答量:5083
采纳率:94%
帮助的人:890万
展开全部
行指针与元素指针的区别实质上就是指 【数组】与【普通指针】的区别。
区别:
1、指针的本质是一个与地址相关的复合类型,它的值是数据存放的位置(地址);数组的本质则是一系列的变量。
2、数组名对应着(而不是指向)一块内存,其地址与容量在生命期内保持不变,只有数组的内容可以改变。指针可以随时指向任意类型的内存块,它的特征是"可变",所以我们常用指针来操作动态内存。
3、当数组作为函数的参数进行传递时,该数组自动退化为同类型的指针。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式