So, given the following:
#include <stdio.h> int * getarr(); int main(int argc, char* argv) { int * arr = getarr(); printf("%d", sizeof(arr)); } int* getarr() { static int a[4] = {0,1,0,3}; return a; } How does one find the length of arr? arr[4] == 0, but so does arr[0] and arr[2].
If this were a char*, the answer would be iterate until '\0', but that does not seem to work here as '\0' == 0.
Addressing arr[5] can seems to consistently result in a value > 163 - 1 (the size of an int on my system), but that does not seem to be a reliable measure as it strikes me as simply an empty location in memory.
Is there a way to retrieve this value consistently? Or does it simply have to be passed in?
arr[4]and above is undefined behavior.