当我有这样的事情时:
int Numbers[] =
{
1,
2,
3,
}
我可以简单地获得这个数组的大小'int numNumbers = ARRAYSIZE(Numbers);'
我的问题是......这对于数组是否有效:
int Numbers[][2] =
{
{ 1,2 },
{ 3,4 },
{ 5,6 },
}
答案 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>