2dim 数组的大小

Size of an 2dim array

本文关键字:数组 2dim      更新时间:2023-10-16

当我有这样的东西时:

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()将始终使用任意维度的数组,但请注意不要在数组作为参数传递的函数中使用它,因为在这种情况下您将不再拥有真正的数组。