2dim 数组的大小
Size of an 2dim array
当我有这样的东西时:
int Numbers[] =
{
1,
2,
3,
}
我可以简单地获取这个数组的大小'int numNumbers = ARRAYSIZE(Numbers);
我的问题是...这是否适用于这样的数组:
int Numbers[][2] =
{
{ 1,2 },
{ 3,4 },
{ 5,6 },
}
我找到了 ARRAYSIZE 的这个定义:
#define ARRAYSIZE(a) (sizeof(a) / sizeof(*(a)))
这绝对适用于单维和二维数组。 sizeof(a)
是数组的大小a
即(数组中的元素数)*(元素的大小),其中sizeof (*a)
是元素的大小。
同样,对于二维情况,sizeof(a)
是完整数组中元素的数量,sizeof(*a)
表示数组在其一维中的大小。
假设ARRAYSIZE
是这样的:
#define ARRAYSIZE(a) (sizeof(a)/sizeof((a)[0]))
那么是的,它会,因为在第二种情况下a[0]
与"2 个整数的数组"相同,所以sizeof(a[0])
的计算结果将sizeof(int)*2
.
ARRAYSIZE()
将始终使用任意维度的数组,但请注意不要在数组作为参数传递的函数中使用它,因为在这种情况下您将不再拥有真正的数组。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- 将数组的地址分配给变量并删除
- 从C++本机插件更新Vector3数组
- lambda参数转换为constexpr技巧,然后获取带链接的数组
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 数组索引的值没有增加
- 将对象数组的引用传递给函数
- 为char数组调整zlib-zpipe
- 2D数组来自文本输入,中间有空格
- std::向量与传递值的动态数组
- 在c++中用vector填充一个简单的动态数组
- 使用strcpy将char数组的元素复制到另一个数组
- 使用指针从C++中的数组中获取最大值
- C++使用整数的压缩数组初始化对象
- 告诉一个 const char 数组,除了编译时 C 样式的字符串外,它不以 '