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

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

Susan Sarandon
Susan SarandonOriginal
2024-12-03 05:41:10229Durchsuche

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

Ermitteln Sie die Größe eines Arrays mithilfe eines Zeigers in C

Die Bestimmung der Anzahl der Elemente in einem Array ist bei der Bearbeitung von Arrays von entscheidender Bedeutung. Bei der Arbeit mit Arrays als Zeiger in C wird diese Aufgabe jedoch zu einer Herausforderung.

C erbt die „Array/Zeiger-Äquivalenz“ von C. Arrays können in Zeiger zerfallen, wenn sie als Funktionsargumente übergeben werden, was Code wie den folgenden ermöglicht:

void func(int* ptr);

int array[5];
int* ptr = array; // equivalent to 'ptr = &array[0]'
func(array); // equivalent to 'func(&array[0]);'

In Ihrem Fall übergeben Sie einen Zeiger auf die Array-Elemente anstelle des Arrays selbst. Daher enthält der Zeiger allein keine Größeninformationen.

Um dies zu handhaben, sollten Sie die Größe explizit als zusätzliches Argument übergeben:

static const size_t ArraySize = 5;
int array[ArraySize];
largest(array, ArraySize);

Passen Sie die Funktion an, um den Array-Zeiger zu akzeptieren und seine Größe direkt:

int largest(int* array, size_t size);

Sie können auch syntaktischen Zucker nutzen, um das Array mit einem festen Wert zu definieren Größe:

void func(int array[5]);

Dies ist jedoch syntaktischer Zucker für eine Array-Zeiger-Deklaration:

void func(int* array);

Wenn Sie das Array selbst und nicht nur einen Zeiger haben, können Sie die Anzahl von ermitteln Elemente mit:

sizeof(array) / sizeof(array[0]);

Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines Arrays ermitteln, wenn ich Zeiger in C 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