Heim >Backend-Entwicklung >C++ >Wie kann ich mehrdimensionale Arrays korrekt an Funktionen in C und C übergeben?

Wie kann ich mehrdimensionale Arrays korrekt an Funktionen in C und C übergeben?

Mary-Kate Olsen
Mary-Kate OlsenOriginal
2024-12-15 00:50:12766Durchsuche

How Can I Correctly Pass Multidimensional Arrays to Functions in C and C  ?

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:

  1. Deklarieren Sie den Array-Zeiger als Zeiger auf Zeiger: int **arr.
  2. Konvertieren Sie den Array-Namen in einen Zeiger auf einen Array-Zeiger: arr = (int **)a.

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn