在二维数组中,行指针是指向一维数组的指针变量.

 我来答
CodeBlove
2022-11-22 · TA获得超过3363个赞
知道小有建树答主
回答量:936
采纳率:79%
帮助的人:236万
展开全部

不是

首先数组名都是数组地址的指针常量。

假设int  a[3]这样一个数组,a是普通常量指针,即一维数组指针,其地址类型是 int * 。因此要定义一个指向这个数组的指针p,则其格式为 : int *p;然后就可以赋值了:p=a;(类型一致)。

再假设int b[3][4]这样一个二维数组,b是行地址常量指针,其地址类型是 int (*)[4] 。因此要定义一个指向这个数组的指针ptr,则其格式为 : int (*ptr)[4]; 然后就也可以赋值了:ptr=b;(类型一致)

这里容易混淆的是,看上去一行数据就是一维数组,所以很多人会将二维数组的一行数据与一维数组的数据混为一谈,其实有差异的,差异在于:行宽不同

我们可以看出一维数组的地址类型为 (type *),没有下标(行宽、数组长度、元素个数),只有定义数组的时候需要给予下标,或者省略下标时必须初始化{1,2,3,4.....},编译器会自动获得下标并分配内存。因此指向一维数组指针也不带下标的,这也就是指针灵活也不安全的原因(数组边界检查及宽度控制完全交给程序员)。然而二维数组中的行宽是确定,也是必须的,因此二维数组的行宽必须明确,因此其指针定义必须包含行宽信息。

type (*)[n] 是行指针类型格式,方括号内的n就是指示行宽,因此行指针不是简单的一维数组指针,而是被限定宽度的一维数组指针,这就是区别。

归纳一下

一维数组指针定义格式:type *p

二维数组行指针定义格式:type (*p)[n]

另外 一维数组指针加一,是递增一个type宽度,二维数组行指针加一,是递增 type宽度*行宽,也就是数据宽度乘一行的元素个数,单位都是字节。

weixyc
2012-05-06 · TA获得超过1128个赞
知道小有建树答主
回答量:763
采纳率:100%
帮助的人:484万
展开全部
是的
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吟游诗人love
2012-05-08 · TA获得超过123个赞
知道答主
回答量:34
采纳率:0%
帮助的人:31.8万
展开全部
指针常量
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式