Heim > Backend-Entwicklung > C++ > Wie können mehrdimensionale Arrays an Funktionen in C und C übergeben werden?

Wie können mehrdimensionale Arrays an Funktionen in C und C übergeben werden?

DDD
Freigeben: 2024-12-24 17:28:18
Original
215 Leute haben es durchsucht

How Can Multidimensional Arrays Be Passed to Functions in C and C  ?

Übergabe mehrdimensionaler Arrays an Funktionen in C und C

In der Programmierung sind Arrays wesentliche Datenstrukturen zum Speichern von Datensammlungen. Beim Umgang mit mehrdimensionalen Arrays ist es wichtig zu verstehen, wie sie an Funktionen übergeben werden können, um Operationen an ihren Elementen auszuführen.

Bedenken Sie den folgenden C-Code:

void print(int *arr[], int s1, int s2) {
    // ...
}

int main() {
    int a[4][4] = {{0}};
    print(a, 4, 4);
}
Nach dem Login kopieren

Dieser Code soll übergeben werden ein mehrdimensionales Array a vom Typ int[4][4] an eine Funktion print, die ein Array von Zeigern auf ganze Zahlen (int **) erwartet. Überraschenderweise lässt sich dieser Code in C erfolgreich kompilieren, in C jedoch nicht.

Warum C einen Fehler auslöst

In C ist der Fehler klar:

cannot convert `int (*)[4]' to `int**' for argument `1' to 
`void print(int**, int, int)'
Nach dem Login kopieren

Dieser Fehler bedeutet dass C keine implizite Konvertierung von einem mehrdimensionalen Array (int[4][4]) in ein Array von Zeigern auf ganze Zahlen (int **) zulässt. Dies liegt daran, dass sich diese beiden Datentypen in ihrer Struktur und Interpretation grundlegend unterscheiden.

So beheben Sie den Fehler

Um diesen Fehler zu beheben, können Sie in C eine Technik namens „Array Address Decay“ verwenden oder konvertieren Sie das mehrdimensionale Array explizit in ein Array von Zeigern in C .

C:

int main() {
    int a[4][4] = {{0}};
    print(a, 4); // Pass the base address of the multidimensional array (array address decay)
}

void print(int *arr, int s) {
    // ...
}
Nach dem Login kopieren

C :

int main() {
    int a[4][4] = {{0}};
    print(a, 4, 4); // Explicit conversion to an array of pointers
}

void print(int **arr, int s1, int s2) {
    // ...
}
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie können mehrdimensionale Arrays an Funktionen in C und C übergeben werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage