3

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

    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;
       }
4

2 回答 2

5

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

这告诉您数组中有多少元素。它给出了2for的预期答案dArray

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

如果你想要它的字节数,这就可以了。

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

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

这不会影响sizeof. 数组没有填充或未填充的概念。

于 2013-04-23T17:25:24.000 回答
2

array[0]包含5 * 3 * 4元素,所以当你的数组的第一个维度是 2 时sizeof(array) / sizeof(array[0])会给你2

将您的宏重写为:

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

获取元素的数量,

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

于 2013-04-23T17:30:40.823 回答