找到多维数组的大小

时间:2013-04-23 17:23:28

标签: c++ arrays multidimensional-array

如何找到像这样的数组的字节大小?

    double dArray[2][5][3][4];

我尝试过这种方法,但它会返回" 2"。也许是因为数组只是声明而没有填充任何东西?

     #include <iostream>
     #define ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))
     using namespace std;

      int main() {
        double dArray[2][5][3][4];
        cout << ARRAY_SIZE(dArray) << endl;
       }

2 个答案:

答案 0 :(得分:4)

  

我如何找到以字节为单位的大小

这可以告诉您阵列中有多少元素。它为2提供了dArray的预期答案。

#define ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))

如果你想要的是字节数,那就可以了。

#define ARRAY_SIZE(array) (sizeof(array))
  

也许是因为数组只是声明而没有填充任何东西?

这不会影响sizeof的行为。数组没有已填充未填充的概念。

答案 1 :(得分:2)

array[0]包含5 * 3 * 4个元素,因此当数组的第一个维度为2时,sizeof(array) / sizeof(array[0])将为您提供2

将您的宏重写为:

#define ARRAY_SIZE(array, type) (sizeof((array))/sizeof((type)))

获取元素数量

或只是sizeof(array)来获取字节数。