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;
}
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.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With