kxf951
kxf951

Reputation: 155

finding size of multidimensional array

How would I find the size in bytes of an array like this?

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

I've tried this method but it returns "2". Maybe because the array is only declared and not filled with anything?

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

Upvotes: 3

Views: 14992

Answers (2)

Drew Dormann
Drew Dormann

Reputation: 63745

How would I find the size in bytes

This tells you how many elements are present in an array. And it gives the expected answer of 2 for dArray.

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

If what you want it the byte count, this will do it.

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

Maybe because the array is only declared and not filled with anything?

That won't affect the behavior of sizeof. An array has no concept of filled or not filled.

Upvotes: 5

Dave Rager
Dave Rager

Reputation: 8150

array[0] contains 5 * 3 * 4 elements so sizeof(array) / sizeof(array[0]) will give you 2 when the first dimension of your array is 2

Rewrite your macro as:

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

to get the number of elements,

or simply sizeof(array) to get the number of bytes.

Upvotes: 2

Related Questions