C++ 求多维数组的大小

C++ 求多维数组的大小,c++,arrays,multidimensional-array,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() { doub

如何找到这样一个数组的大小(以字节为单位)

    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;
       }
#包括
#定义数组大小(数组)(sizeof((数组))/sizeof((数组[0]))
使用名称空间std;
int main(){
双达瑞[2][5][3][4];
库特
如何找到以字节为单位的大小

这将告诉您一个数组中存在多少个元素,并给出
dArray
的预期答案
2

#define ARRAY_SIZE(array) (sizeof((array))/sizeof((array[0])))
如果你想要它的字节数,这将做它

#define ARRAY_SIZE(array) (sizeof(array))
可能是因为数组只是声明的,没有填充任何内容

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

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

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

将宏重写为:

#define ARRAY_SIZE(array, type) (sizeof((array))/sizeof((type)))
要获取元素的数量


或者只需
sizeof(array)
即可获得字节数。

您想要以字节为单位的大小,还是以整个数组中的元素数为单位的大小?要获得数组中的元素总数(此处:2*5*3*4),您可以使用类似
模板constepr std::size\t get\u element\u count(t const&a)的内容{return sizeof(T)/sizeof(typename std::remove_all_extents::type)}
第一个宏
((数组))中的双括号有什么原因吗
?@DyP我不知道有什么功能上的原因。这是问题中提到的代码。:)非常确定OP在获取2*5*3*4时比从元素转换为字节时遇到更多的困难。有人可能会说,如果第一个宏的名称是
数组长度
(或
数组长度
)还有,C++11方法使用了
std::extent
,比如
template constepr std::size\u t get_extent(t const&a){return std::extent::value;}
OIC。不过,这是对的-问题是数组[0]太大了,所以OP应该除以数组[0][0][0]的大小才能得到元素计数。