Heim > Backend-Entwicklung > C++ > Hauptteil

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

DDD
Freigeben: 2024-11-24 08:17:10
Original
565 Leute haben es durchsucht

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)); 
}
Nach dem Login kopieren

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; 
}
Nach dem Login kopieren

Im Aufrufer würden Sie dann angeben die Größe des Arrays als Argument:

makeVectorData(verts, sizeof(verts) / sizeof(float));
Nach dem Login kopieren

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!

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