数组名代表数组第一个元素的地址,二维数组三维数组也这样吗?

2025-06-28 00:24:33
推荐回答(2个)
回答1:

同样都是数组名,而且数组名代表数组第一个元素的地址 这话说的有问题啊

数组名代表的是数组的首地址!
但不同的维数的数组情况是不一样的,如二维数组
int b[3][2] ;
b是数组的首地址,也是第一行的地址
b[0]是第一行第一个元素的首地址(也可以说是数组第一个元素的地址)
可是从数值上来说,b和b[0]是相等的。

变量在进行赋值时,需要接收数据的变量与值变量(或常量)是相同类型才可以
回到你的问题中
int a[2]={1, 2}; //一维数组
int b[1][2]={1, 2}; //二维数组
int * p1=a;//一维数组对应一维指针,可以赋值
int * p2=b; //二维数组 对应 ”伪“二维指针,而p2是一维指针,所以赋值时会有编译错误

”伪“二维指针 这样记比较方便,实际上应该是这样的:
int (*p2)[2] = b ; //这样才是准确的 p2是个指针,指向一个有两个int元素的数据块

回答2:

对,不过二维数组被视为元素为一维数组的一维数组,同样地,三维数组被视为元素为二维数组的一维数组。