Heim >Backend-Entwicklung >C++ >Wie kann ich die Größe eines an eine C-Funktion übergebenen Arrays zuverlässig bestimmen?
Bestimmen der Array-Größe in einer übergebenen Funktion
Das Problem tritt in C auf, wo die Bestimmung der Größe eines an eine Funktion übergebenen Arrays ein Problem darstellt Herausforderung, da sizeof die Länge des Arrays nicht genau erfassen kann.
Eine beliebte Lösung schlägt vor, die Schleife zu beenden, wenn das Array-Element array[i] erreicht NULL. Dieser Ansatz kann jedoch zu Fehlern führen, da array[i] manchmal zufällige Müllwerte am Ende des Arrays enthält.
Vorlagenbasierte Lösung mit Array-Referenzen
C bietet eine zuverlässigere Lösung durch Vorlagen und Array-Referenzen:
template <typename T, int N> void func(T (&a)[N]) { for (int i = 0; i < N; ++i) a[i] = T(); // reset all elements }
Diese vorlagenbasierte Funktion benötigt ein Array a vom Typ T mit einer festen Größe von N. Durch die Verwendung des Referenzoperators & wird das ursprüngliche Array an a gebunden und ermöglicht so den Zugriff auf die Elemente des Arrays, ohne die Größe explizit zu übergeben.
Um diese Funktion zu verwenden, deklarieren Sie einfach ein Array und übergeben es als Referenz:
int x[10]; func(x);
Es ist wichtig zu beachten, dass diese Lösung nur für Arrays gilt, nicht für Zeiger. Für zeigerbasierte Arrays ist die Verwendung des Standard Template Library (STL)-Containers std::vector eine bessere Option, der Größen- und Elementzugriffsfunktionen bietet.
Das obige ist der detaillierte Inhalt vonWie kann ich die Größe eines an eine C-Funktion übergebenen Arrays zuverlässig bestimmen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!