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

Wie bestimme ich die Größe eines Arrays, das als Funktionsargument in C übergeben wird?

Patricia Arquette
Freigeben: 2024-11-09 10:36:02
Original
642 Leute haben es durchsucht

How to Determine the Size of an Array Passed as a Function Argument in C  ?

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[]);
Nach dem Login kopieren

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 (&amp;arr)[N]) {
  std::cout << N << std::endl; // Outputs the correct array size
  return N;
}
Nach dem Login kopieren

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)
Nach dem Login kopieren

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!

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