Heim  >  Artikel  >  Backend-Entwicklung  >  Wie kann ich die Größe eines C-Arrays bestimmen, das als Funktionsparameter übergeben wird?

Wie kann ich die Größe eines C-Arrays bestimmen, das als Funktionsparameter übergeben wird?

DDD
DDDOriginal
2024-11-24 08:17:10563Durchsuche

How Can I Determine the Size of a C   Array Passed as a Function Parameter?

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!

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