Mehrdimensionale Array-Übergabe in C und C
In C und C können Arrays vom Typ int4 nicht direkt an Funktionen übergeben werden, die Arrays von erwarten int*. Diese Inkompatibilität ergibt sich aus dem grundlegenden Unterschied in der Art und Weise, wie diese beiden Sprachen mit mehrdimensionalen Arrays umgehen.
In C zerfällt ein mehrdimensionaler Array-Name in einen Zeiger auf sein erstes Element, was die im Codeausschnitt veranschaulichte Implementierung ermöglicht. In C behalten Arrays jedoch ihren Typ bei, auch wenn sie in Funktionsaufrufen verwendet werden, was zu der folgenden Fehlermeldung führt:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
Lösung für C und C
To Übergeben Sie ein mehrdimensionales Array an eine Funktion in C und C, eine Technik, die als Zeigerarithmetik bekannt ist beschäftigt:
Geänderter Code
void print(int **arr, int s1, int s2) { int i, j; for(i = 0; i < s1; i++) for(j = 0; j < s2; j++) printf("%d, ", arr[i][j]); } int main() { int a[4][4] = {{0}}; print((int **)a, 4, 4); }
Wichtiger Hinweis
Der Code wird kompiliert und ausgeführt sowohl in C als auch in C erfolgreich. Es wurden jedoch zusätzliche Korrekturen an der printf-Anweisung vorgenommen, um den korrekten Zugriff auf Array-Elemente mithilfe von arr[i][j] anstelle von *((arr i) j) sicherzustellen.
Denken Sie daran, dass mehrdimensionale Arrays nicht übergeben werden können ergibt sich direkt aus dem unterschiedlichen Verhalten von Arrays in C und C und muss entsprechend angegangen werden.
Das obige ist der detaillierte Inhalt vonWie kann ich mehrdimensionale Arrays korrekt an Funktionen in C und C übergeben?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!