不可以,二维数组要看做“数组的数组”。
(以如下定义为例:int a[4]; int * p;)
给你个对于指针和数组的正确理解吧:
定义的不同:C 里,指针和数组是不同的类型,不要把数组名看做“常指针”。所以 sizeof(a) 和 sizeof(p) 值是不同的。
容易被混淆的原因:a. 都有基础类型。b. 数组(或者叫数组名)可以默认转化为指针,值为数组首地址。这就像 int 可以默认转化为 double 一样。
操作:除声明外,中括号操作符仅用于指针,如 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];
其它类推。
不知道表述清楚了没,有疑问加评论吧。