Array-Größenbestimmung in C-Funktionsparametern
Im Gegensatz zur Hauptfunktion wird hier die Größe eines Arrays bestimmt, das als Argument an eine Funktion übergeben wird In C erfordert die Verwendung von sizeof() eine Referenzvorlage. Dies liegt daran, dass Arrays bei der Übergabe an Funktionen in Zeiger zerfallen.
Array-Zerfall in Zeiger
Bedenken Sie den folgenden Codeausschnitt:
int length_of_array(int some_list[]);
Trotz Bei der Deklaration mit eckigen Klammern zerfällt some_list in einen ganzzahligen Zeiger int*, wenn es als Argument übergeben wird. Infolgedessen gibt sizeof(some_list) die Größe eines Zeigers zurück, nicht die Array-Größe.
Referenzvorlagenlösung
Um die Größe eines Arrays korrekt zu bestimmen, Verwenden Sie eine Referenzvorlage. Zum Beispiel:
template<size_t N> int length_of_array(int (&arr)[N]) { std::cout << N << std::endl; // Outputs the correct array size return N; }
Ausnahme: Mehrdimensionale Arrays
Es gibt eine Ausnahme von der Array-Abklingregel. Mehrdimensionale Arrays behalten ihre Dimensionalität und werden nicht als Zeiger übergeben. Daher kann sizeof() direkt verwendet werden, um ihre Größe zu bestimmen:
int a[3][4]; std::cout << sizeof(a) / sizeof(a[0]); // Output: 4 (number of columns)
Das obige ist der detaillierte Inhalt vonWie bestimme ich die Größe eines Arrays, das als Funktionsargument in C übergeben wird?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!