Problem:
In C führt die Übergabe eines mehrdimensionalen Arrays im C-Stil an eine Funktion, die ein Array von int* erwartet, zu einem Compiler Fehler.
Grund:
Ein mehrdimensionales Array wie int4 kann nicht direkt in einen Zeiger vom Typ int konvertiert werden*, was int arr bedeutet [] stellt in der Funktion dar Erklärung.
Beispiel:
#include<stdio.h> void print(int *arr[], int s1, int s2) { // ... } int main() { int a[4][4] = {{0}}; print(a, 4, 4); // Error in C++ }
C meldet einen Fehler:
cannot convert `int (*)[4]' to `int**' for argument `1' to `void print(int**, int, int)'
Lösung:
In C und C ist die Übergabe eines mehrdimensionalen Arrays als int** nicht gültig. Um dies effektiv zu erreichen, muss das Array mit der folgenden Technik in einen Zeiger umgewandelt werden:
Hinweis:
Das Ignorieren von Compiler-Warnungen oder das Versäumnis, die ordnungsgemäße Konvertierung zu implementieren, kann dazu führen, dass dies der Fall ist Dies führt zu undefiniertem Verhalten und unvorhersehbaren Ergebnissen.
Das obige ist der detaillierte Inhalt vonWarum funktioniert die Übergabe eines 2D-Arrays im C-Stil an eine Funktion, die „int' erwartet, in C nicht?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!