This ad
void size(int a, int array[a][a]);
equivalently
void size(int a, int ( *array )[a] );
where arrayis a pointer to an array of variable length with elements a.
This is a valid syntax in C99.
Here is a demo program
#include <stdio.h>
void f( size_t n, int a[n][n] )
{
printf( "%zu\n", sizeof( *a ) / sizeof( **a ) );
}
int main(void)
{
int a[3][3];
int b[10][10];
f( 3, a );
f( 10, b );
return 0;
}
Program exit
3
10
source
share