Reputation: 155
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
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
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