Heim > Backend-Entwicklung > C++ > Wie kann ich die Größe eines Arrays ermitteln, das in C als Zeiger übergeben wird?

Wie kann ich die Größe eines Arrays ermitteln, das in C als Zeiger übergeben wird?

Patricia Arquette
Freigeben: 2024-12-22 03:52:12
Original
287 Leute haben es durchsucht

How Can I Get the Size of an Array Passed as a Pointer in C  ?

Ermitteln der Größe eines Arrays vom Zeiger in C

In C kann die Bestimmung der Größe eines als Zeiger übergebenen Arrays eine Herausforderung sein. Arrays weisen eine „Array/Zeiger-Äquivalenz“ auf, wobei ein Array in einen Zeiger zerfallen kann, wenn es als Funktionsargument übergeben wird. Dies wirft das Problem auf, die Größe des Arrays genau zu bestimmen.

Um dieses Problem zu lösen, können wir uns nicht auf sizeof() verlassen, da es die Größe des Zeigers zurückgibt, die normalerweise 4 oder 8 Bytes beträgt, und nicht die Anzahl der Elemente im Array. Stattdessen müssen wir die Größe des Arrays explizit als zusätzliches Argument übergeben.

Lösung:

Ändern Sie den Funktionsheader so, dass er einen Parameter für die Array-Größe enthält:

int largest(int *list, size_t size)
Nach dem Login kopieren

Übergeben Sie die Größe des Arrays zusammen mit dem Zeiger an die Funktion:

static const size_t ArraySize = 5;
int array[ArraySize];
int result = largest(array, ArraySize);
Nach dem Login kopieren

Durch Übergabe von size explizit angeben, kann die Funktion die Anzahl der Elemente im Array entsprechend bestimmen.

Alternativer Ansatz:

Wenn wir nur einen Zeiger auf das Array und nicht auf das Original haben Array-Variable können wir die Größe mit der folgenden Formel berechnen:

size = sizeof(pointer_variable) / sizeof(array_element_type)
Nach dem Login kopieren

Wenn wir beispielsweise einen Zeiger int *ptr auf ein Array von Ganzzahlen haben Bei einer unbekannten Größe können wir die Größe wie folgt ermitteln:

size = sizeof(ptr) / sizeof(int);
Nach dem Login kopieren

Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines Arrays ermitteln, das in C als Zeiger ü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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage