user1362058 user1362058 - 10 days ago 5
C Question

How to pass a 2D array by pointer in C?

I am learning C and am having trouble passing the pointer of a 2D array to another function that then prints the 2D array. Any help would be appreciated.

int main( void ){
char array[50][50];
int SIZE;

...call function to fill array... this part works.

printarray( array, SIZE );
}

void printarray( char **array, int SIZE ){
int i;
int j;

for( j = 0; j < SIZE; j++ ){
for( i = 0; i < SIZE; i ++){
printf( "%c ", array[j][i] );
}
printf( "\n" );
}
}

Answer

char ** doesn't represent a 2D array - it would be an array of pointers to pointers. You need to change the definition of printarray if you want to pass it a 2D array:

void printarray( char (*array)[50], int SIZE )

or equivalently:

void printarray( char array[][50], int SIZE )
Comments