Bestimmen der Array-Größe bei der Übergabe an Funktionen in C
Im Gegensatz zur Hauptfunktion, wo sizeof() direkt die Größe eines Arrays zurückgibt , die Übergabe eines Arrays an eine Funktion muss aufgrund des Array-Zerfalls in Zeiger berücksichtigt werden.
Array-Zerfall an Zeiger
Bei der Übergabe als Argument zerfallen Arrays in Zeiger auf ihr erstes Element. Das bedeutet, dass der Ausdruck sizeof(some_list) innerhalb einer Funktion die Größe des Zeigers und nicht die Größe des gesamten Arrays angibt.
Sizeof Ratio Problem
Using Der Ausdruck (sizeof(some_list)/sizeof(*some_list)) zur Berechnung der Array-Größe funktioniert nicht denn:
Dieses Verhältnis ergibt immer 1, unabhängig von der Array-Größe. Daher gibt die Funktion length_of_array immer 1 zurück.
Alternative Methode mit Vorlagen
Um die Größe eines Arrays bei Übergabe an eine Funktion genau zu bestimmen, verwenden Sie eine Vorlage:
template<size_t N> int length_of_array(int (&arr)[N]) { return N; }
Dieser Ansatz verwendet einen Vorlagenparameter N, um die Größe des Arrays anzugeben, die dann von zurückgegeben wird Funktion.
Das obige ist der detaillierte Inhalt vonWie bestimmen Sie die Größe eines Arrays, das an eine C-Funktion übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!