陳 力*_*陳 力 4 c c++ arrays multidimensional-array language-lawyer
例如
int arr[2][3] = ...
Run Code Online (Sandbox Code Playgroud)
类型arr[0]是
int (*)[3] // pointer to int[3], which is a pointer.
Run Code Online (Sandbox Code Playgroud)
要么
int[3] // an array whose size is 3, which is an array.
Run Code Online (Sandbox Code Playgroud)
谷歌没有告诉我这个问题.
我知道指针和数组是不同的类型(派生类型).
也许C和C++对待它的方式不同,我希望看到标准的措辞.
use*_*738 15
arr[0]是int [3]不是指针的类型.
int (*p)[3]是类型的int(*)[3]意思指向3个元素的数组.
指针不是数组而数组不是指针.
现在当你将这个2d数组传递给一个函数(或任何发生衰减的情况)时,它会衰减成指向第一个元素的指针int (*)[3].
在C2d数组中更清楚的只是数组数组.
解剖
arr是一个数组,每个元素都是一个带3元素的数组.
arr[0]在大多数情况下(除了sizeof等)将衰减为指向它包含的第一个元素的指针int*.
arr[0][0]是一个int.
最后&arr[0]..猜怎么着?这是类型int(*)[3].