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!