C语言中二维数组名是不是可以看作指针数组名?

只不过,这个指针数组里的元素都是数组指针,可不可以这样理解?... 只不过,这个指针数组里的元素都是数组指针,可不可以这样理解? 展开
 我来答
安心播音
2012-10-08 · TA获得超过1564个赞
知道小有建树答主
回答量:397
采纳率:0%
帮助的人:417万
展开全部

不可以,二维数组要看做“数组的数组”。

(以如下定义为例:int a[4]; int * p;)

 

给你个对于指针和数组的正确理解吧:

  1. 定义的不同:C 里,指针和数组是不同的类型,不要把数组名看做“常指针”。所以 sizeof(a) 和 sizeof(p) 值是不同的。

  2. 容易被混淆的原因:a. 都有基础类型。b. 数组(或者叫数组名)可以默认转化为指针,值为数组首地址。这就像 int 可以默认转化为 double 一样。

  3. 操作:除声明外,中括号操作符仅用于指针,如 p[0],p[5] 等。当使用 a 时,要看做 (int*)a 。比如 a[0] 要看做 ((int*)a)[0] , *a 要看成 *(int*)a 。(除 sizeof 以及类似操作以外)

 

所谓的“二维数组”,“二级指针”,“指针数组”,以及“数组指针”的理解应该为:

基础类型为数组的数组,

基础类型为指针的指针,

基础类型为指针的数组,

基础类型为数组的指针。

 

比如二维数组定义为 int b[3][4]; ,可以看做:

typedef int A[4];

A b[3];

其它类推。

 

不知道表述清楚了没,有疑问加评论吧。

xiaoguazhu123
2012-09-29 · 超过14用户采纳过TA的回答
知道答主
回答量:80
采纳率:100%
帮助的人:39.8万
展开全部
例如:
二维数组名是一个指针,但是说它是常量的意思是它本身不可更改:如你定义int a[34][3],a确实是个指针,*a指向数组中第一个整数;但是你不能通过a++操作使在此操作后a指向数组中第二个整数,而普通指针(int a[12];int *b=a;b 就是普通指针)可以这么操作的,所以说它是“指针常量”;
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友8415e69
2012-09-29 · TA获得超过100个赞
知道小有建树答主
回答量:194
采纳率:0%
帮助的人:100万
展开全部
二维数组的名称就是指针的指针, 对于一维数组,它的数组名,就是它存放内存的首地址
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
56504584
2012-09-29
知道答主
回答量:22
采纳率:0%
帮助的人:8.9万
展开全部
大同小异吧
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式