• Create Account

### #ActualHodgman

Posted 09 August 2012 - 10:03 PM

The function, do_something, doesn't know the size of your array. The first is basically equivalent to this (which works because arrays can decay to pointers):
void do_something(int* v);
With the second case, you can only omit one of the dimension-sizes, because to address/look-up the array, the compiler needs to know at least one of the dimension sizes. In other words, the array-look-up logic doesn't need to know the size of one dimension -- a 3d array only needs 2 sizes known, a 4d array only needs 3 sizes known.

e.g. the logic for looking up a value in a 3d array might look like:
int Lookup( int* array, int x, int y, int z, int sizeX, int sizeY, int sizeZ )
{
int* value = array + x + y*sizeX + z*sizeY;
return *value;
}

### #1Hodgman

Posted 09 August 2012 - 09:57 PM

The function, do_something, doesn't know the size of your array. The first is basically equivalent to this (which works because arrays can decay to pointers):
void do_something(int* v);
With the second case, you can only omit one of the dimension-sizes, because the minimum amount of information that the compiler needs to know how to address the array. With a 3D array, you need to explicitly state 2 of the dimensions.

PARTNERS