Übergabe eines mehrdimensionalen Arrays an eine Funktion in C
In diesem Codeausschnitt wird versucht, ein mehrdimensionales Array im C-Stil an a zu übergeben Funktion, die ein Array von ganzzahligen Zeigern erwartet:
#include<stdio.h> void print(int *arr[], int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print(a,4,4); }
Dieser Code wird in C kompiliert, aber nicht in C. Hier ist der Grund:
print(&a[0],4,4);
In C ist dieser Zerfall nicht zulässig.Der Array-Typ int4 ist nicht implizit in den Zeigertyp int** konvertierbar. Dies erklärt die Fehlermeldung:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
Lösung:
Um ein mehrdimensionales Array an eine Funktion in C zu übergeben, muss man explizit konvertieren es auf einen Zeiger des entsprechenden Typs. Dies kann mit der folgenden Technik erreicht werden:
#include<stdio.h> void print(int **arr, int s1, int s2) { ... } int main() { int a[4][4] = {{0}}; print((int **)a,4,4); }
Durch explizite Konvertierung des Arrays in einen Zeiger mithilfe der Umwandlung (int )** wird der Code nun kompiliert und verhält sich wie vorgesehen sowohl C als auch C .
Das obige ist der detaillierte Inhalt vonWie kann ich ein mehrdimensionales Array korrekt an eine Funktion in C übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!