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
Patricia ArquetteOriginal
2024-11-09 10:36:02659Durchsuche

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[]);

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;
}

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!

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