2 dim阵列的大小

时间:2014-03-02 21:52:22

标签: c++ arrays

当我有这样的事情时:

int Numbers[] = 
{
    1,
    2,
    3,
}

我可以简单地获得这个数组的大小'int numNumbers = ARRAYSIZE(Numbers);'

我的问题是......这对于数组是否有效:

int Numbers[][2] = 
{
    { 1,2 },
    { 3,4 },
    { 5,6 },
}

2 个答案:

答案 0 :(得分:1)

我找到了ARRAYSIZE的这个定义:

#define ARRAYSIZE(a) (sizeof(a) / sizeof(*(a)))

这绝对适用于单维和二维数组。 sizeof(a)是数组a的大小,即(数组中元素的数量)*(元素的大小),其中sizeof (*a)是元素的大小。
类似地,对于二维情况,sizeof(a)是完整数组中元素的数量,sizeof(*a)表示其中一个维度中数组的大小。

答案 1 :(得分:0)

假设ARRAYSIZE类似于:

#define ARRAYSIZE(a) (sizeof(a)/sizeof((a)[0]))

然后是的,它会,因为在第二种情况下a[0]与“2个整数数组”相同,因此sizeof(a[0])将评估为sizeof(int)*2

ARRAYSIZE()将始终使用任意维度的数组,只是注意不要在数组作为参数传递的函数内使用它,因为在这种情况下你将不再拥有一个真正的数组。 / p>