在 c 和 c++ 中,二维数组的元素是什么类型?

What's the type of 2d array's element in c and c++?

本文关键字:元素 是什么 类型 二维数组 c++      更新时间:2023-10-16

例如

int arr[2][3] = ...

arr[0]的类型是

int (*)[3] // pointer to int[3], which is a pointer. 

int[3] // an array whose size is 3, which is an array. 

谷歌没有告诉我这个问题。

我知道指针和数组是不同的类型(派生类型(。

也许C和C++区别对待它,我希望看到标准的措辞。

arr[0]属于int [3]类型,它不是指针。

int (*p)[3] 的类型int(*)[3]意思是指向 3 个元素数组的指针。

指针

不是数组,数组也不是指针。

现在,当您将此 2d 数组传递给函数(或任何发生衰减的情况(时,它会衰减为指向第一个元素的指针,该元素int (*)[3] .

更清楚的是C 2d数组只不过是数组的数组。

解剖

  • arr是一个数组,每个元素又是一个包含3元素的数组。

  • 在大多数情况下,arr[0](sizeof 等除外(将衰减为指向它包含的第一个元素的指针,这是一个int*

  • arr[0][0]是一个int.

  • 最后&arr[0]..你猜怎么着?这是类型 int(*)[3] .