例如
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 个元素的数组的指针。
指针不是数组,数组也不是指针。
现在,当您将此二维数组传递给函数(或发生衰减的任何情况)时,它会衰减为指向第一个元素的指针,该元素是 int (*)[3]
.
在 C
中更清楚,二维数组不过是数组的数组。
剖析
arr
是一个数组,每个元素又是一个包含3
个元素的数组。arr[0]
在大多数情况下(除了sizeof
等)将衰减为指向它包含的第一个元素的指针,它是一个int *
.arr[0][0]
是一个int
。最后
&arr[0]
.. 你猜怎么着?这是int(*)[3]
类型。
关于c++ - c 和 c++ 中二维数组元素的类型是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48040217/