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

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

DDD
DDDOriginal
2024-12-20 15:41:13698Durchsuche

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

Bestimmen der Array-Größe bei Übergabe als Funktionsargument

Das Verständnis der Array-Größe bei der Übergabe an eine andere Funktion ohne explizite Angabe ihrer Größe kann in C eine Herausforderung sein. Diese Frage entstand aus der Notwendigkeit, eine Schleife innerhalb einer Funktion auszuführen, die ein Array als Argument empfängt.

Der ursprüngliche Ansatz, eine bedingte Prüfung auf einen NULL-Zeigerwert zu verwenden, erwies sich aufgrund des potenziellen Vorhandenseins unerwarteter Werte als unzureichend im Array.

C-Ansatz mit Vorlagen

Eine effektive Lösung in C besteht darin, Vorlagen zu nutzen und das Array weiterzugeben Referenz:

template <typename T, int N>
void func(T (&amp;a)[N]) {
    for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements
}

Durch die Angabe der Array-Größe N als Vorlagenparameter kennt die Funktion die genaue Array-Größe, mit der sie arbeitet. Dieser Ansatz stellt sicher, dass die Schleife über die vorgesehene Anzahl von Elementen iteriert.

Um diese Vorlagenfunktion zu nutzen, kann ein Array wie folgt übergeben werden:

int x[10];
func(x);

Überlegungen

Das ist es Es ist wichtig zu beachten, dass dieser Ansatz nur für Arrays funktioniert, nicht für Zeiger. Für eine vielseitigere Lösung könnte die Verwendung eines Standardbibliothekscontainers wie std::vector die bessere Wahl sein.

Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines Arrays bestimmen, 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