Wie ein 2D-Array mit Zeiger in C übergeben?

Ich Lerne C und habe Probleme beim übergeben der Zeiger von einem 2D-array auf eine andere Funktion, dann druckt das 2D-array. Jede Hilfe würde geschätzt werden.

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" );
    }
}
Kommentar zu dem Problem
void printarray( char array[][50], int SIZE ) Kommentarautor: Lucas
Während es möglich ist, dies zu tun, sind Sie besser dran, konvertieren es in ein 1D-array und die Verwendung von j*SIZE+i zu indizieren. Kommentarautor: Dave
@Dave warum? ...............................(nur filler) Kommentarautor: kotlomoy
@kotlomoy, weil C ' n-D-array-syntax mehrdeutig ist am besten, und die Indizierung manuell zwingt Sie zu prüfen, den Speicher um (oft nützlich für die Cache-Leistung). Auch bedeutet es, wechseln Sie nahtlos auf die Verwendung einer dynamischen Größe array (via malloc) in die Zukunft. Kommentarautor: Dave

InformationsquelleAutor der Frage user1362058 | 2013-05-23

Schreibe einen Kommentar