Bestimmen der Array-Größe in C-Funktionsparametern
In C werden Arrays implizit in Zeiger konvertiert, wenn sie als Funktionsparameter übergeben werden. Dies bedeutet, dass die Größeninformationen verloren gehen und ein direkter Zugriff auf die Größe des Arrays innerhalb der Funktion nicht möglich ist.
In Ihrem Code-Snippet:
void makeVectorData(float p_vertData[]) { int num = (sizeof(p_vertData)/sizeof(int)); }
sizeof(p_vertData) ruft die Größe ab des Zeigers auf das Array, nicht auf das Array selbst. Da ein Zeiger 32 Bit benötigt (auf einem 32-Bit-System), ist num gleich 1, unabhängig von der tatsächlichen Größe des Arrays.
Lösung:
An Um auf die Größe des Arrays zuzugreifen, können Sie einen separaten Parameter übergeben, der die Größe angibt:
void makeVectorData(float p_vertData[], int size) { int num = size; }
Im Aufrufer würden Sie dann angeben die Größe des Arrays als Argument:
makeVectorData(verts, sizeof(verts) / sizeof(float));
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines C-Arrays bestimmen, das als Funktionsparameter übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!