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); }
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.
In C ist der Fehler klar:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
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.
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) { // ... }
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) { // ... }
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!