Heim >Backend-Entwicklung >C++ >Wie kann ich die Größe eines Arrays in C ermitteln, wenn ich Zeiger verwende?

Wie kann ich die Größe eines Arrays in C ermitteln, wenn ich Zeiger verwende?

Patricia Arquette
Patricia ArquetteOriginal
2025-01-05 08:51:41276Durchsuche

How Can I Get the Size of an Array in C   When Using Pointers?

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!

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