Heim >Backend-Entwicklung >C++ >Wie kann ich die Größe eines Arrays in C ermitteln, wenn ich Zeiger verwende?
Ermitteln der Größe eines Arrays vom Zeiger in C
Bei der Arbeit mit Arrays in C besteht eine häufige Aufgabe darin, die Größe oder Anzahl von Arrays zu bestimmen Elemente innerhalb eines Arrays. Dies kann jedoch schwierig sein, wenn über einen Zeiger auf das Array zugegriffen wird.
Problem bei der Bestimmung der Array-Größe anhand des Zeigers
Bedenken Sie den folgenden Funktionsheader:
int largest(int *list, int highest_index);
Diese Funktion soll die größte Ganzzahl in einem Array von Ganzzahlen zurückgeben. Das Problem tritt auf, wenn versucht wird, die Anzahl der Elemente im Array „list“ mithilfe des Zeigers zu bestimmen.
Falsche Methoden
Einige falsche Methoden, die versucht wurden, sind:
int i = sizeof list/sizeof(int); //returns incorrect value int i = list.size(); // does not compile
Diese Methoden geben entweder einen falschen Wert zurück oder werden nicht kompiliert, da sie davon ausgehen, dass das Array von Natur aus bekannt ist Zeiger.
Richtiger Ansatz: Array-Größe als Argument übergeben
Der richtige Ansatz besteht darin, die Array-Größe als zusätzliches Argument an die Funktion zu übergeben. Dadurch kann die Funktion die Anzahl der Elemente im Array bestimmen.
Zum Beispiel:
static const size_t ArraySize = 5; int array[ArraySize]; func(array, ArraySize);
In diesem Beispiel übernimmt die Funktion „func“ den Array-Zeiger und die Array-Größe als Argumente.
Begründung
C ermöglicht, dass Arrays in Zeiger zerfallen, wenn sie als Funktion übergeben werden Argumente. Zeiger allein enthalten jedoch keine Informationen über die Array-Größe. Durch die Übergabe der Array-Größe als Argument kann die Funktion die Anzahl der Elemente im Array korrekt bestimmen.
Fazit
Beim Arbeiten mit Arrays über Zeiger, Es ist unbedingt zu berücksichtigen, dass Zeiger keine inhärenten Informationen über die Array-Größe haben. Die Lösung besteht darin, die Array-Größe als zusätzliches Argument an Funktionen zu übergeben, die diese Informationen benötigen.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines Arrays in C ermitteln, wenn ich Zeiger verwende?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!