在 c 和 c++ 中,二维数组的元素是什么类型?
What's the type of 2d array's element in c and c++?
例如
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]
.
相关文章:
- 从字符数组的元素中减去'a'是什么意思
- C++ 未初始化的本地(非全局)int 数组中的元素类型到底是什么?
- 在向量中查找大于 0(或通常为 k)的最小元素的最佳方法是什么?
- 通过作为指向 C++ 函数的指针传递来访问 std::array 元素的正确方法是什么?
- 找到对称矩阵的最大元素的最有效算法是什么
- 返回向量元素的 l 值的正确方法是什么?
- 按升序打印矢量的所有元素直到它为空而没有重复项的最有效方法是什么?
- 从长(且合理)稀疏向量中选择随机元素的最有效方法是什么?
- " ans += (a[i] - ans * r > 0); "是什么意思,其中 ans,r 是整数,a[i] 是数组元素?
- 在查找子集中元素和元素数量之间的二进制比较背后的逻辑是什么?
- 我如何找出3D容器的元素是什么类型
- 的每个元素是什么意思?
- 在 c 和 c++ 中,二维数组的元素是什么类型?
- 使用 CDT 从头文件中获取属性定义的节点元素是什么
- 在 typedef 中有三个元素是什么意思 C++.
- 数组在方括号中增加元素是什么意思
- 如何知道您输入到std::array中的最后一个元素是什么?
- 我读了map.erase(map.end());删除地图的最后一个元素。但是最后一个元素是什么?它是否基于元素的插入顺序?
- 向量中的第一个元素是什么
- 对象指针向量中的元素是什么