Arrays sind eine der am häufigsten verwendeten Formen der Datenspeicherung im Programmbetrieb. Sie ermöglichen es Ihnen, Elemente des gleichen Typs in einer geordneten Reihenfolge zu organisieren und nach Index schnell auf sie zuzugreifen. Sehr oft müssen Sie bei der Entwicklung von Anwendungen in leistungsstarken und flexiblen Programmiersprachen, die einen direkten Speicherzugriff ermöglichen, wie beispielsweise C++, die Größe des Arrays bestimmen.
Notwendig
C++-Compiler
Anweisungen
Schritt 1
Bestimmen Sie die Größe des Arrays zur Kompilierzeit, indem Sie es mit dem Operator sizeof berechnen. Dieser Operator gibt die Speichermenge (in Bytes) zurück, die von dem übergebenen Argument belegt wird. Das Argument kann entweder eine Variable oder ein Typbezeichner sein. Der Operator sizeof gibt die endliche Menge an Speicher zurück, die das Objekt zum Zeitpunkt der Programmausführung belegt (unter Berücksichtigung beispielsweise der Einstellungen für die Ausrichtung der Strukturfelder), seine Berechnung erfolgt jedoch beim Kompilieren.
Schritt 2
Um die Größe eines Arrays mit dem sizeof-Operator zu bestimmen, teilen Sie seine Gesamtgröße durch die Größe eines Elements. Wenn Sie beispielsweise die folgende Definition eines Arrays haben: int aTemp = {10, 20, 0xFFFF, -1, 16}, dann kann seine Größe wie folgt berechnet werden: int nSize = sizeof (aTemp) / sizeof (aTemp [0]);
Schritt 3
Für eine bequemere Verwendung dieser Methode ist es sinnvoll, ein Makro zu definieren: #define countof (a) (sizeof (a) / sizeof (a [0])) Beachten Sie, dass der Wert des Operators sizeof beim Kompilieren berechnet wird Zeitpunkt, an dem die Berechnung durchgeführt wird, müssen Informationen über das Volumen des Arrays und seiner Elemente explizit verfügbar sein. Mit anderen Worten, es ist unmöglich, die Parameter eines Arrays unbekannter Größe durch seine extern-Deklaration zu bestimmen.
Schritt 4
Bestimmen Sie die Größe des Arrays während der Ausführung des Programms, indem Sie das bekannte Vorzeichen seiner Beendigung verwenden. Einer der Ansätze, der das Speichern und Übertragen von Daten in Form von Arrays unbestimmter Länge ermöglicht, besteht darin, einem Vorzeichen, das den Abschluss einer Datensequenz anzeigt, einen speziellen Wert zuzuweisen. Beispielsweise müssen Einzelbyte-Strings im C-Stil, die Zeichenarrays sind, mit dem Wert 0 enden, gepackte C-String-Arrays variabler Länge sind nullterminiert und Zeigerarrays müssen nullterminiert sein.
Schritt 5
Um die Größe eines so dargestellten Arrays zu bestimmen, scannen Sie es Element für Element, bis Sie das abschließende Element finden. Erhöhen Sie den mit Null initialisierten Zähler während des Scans. Oder erhöhen Sie den Wert des Zeigers auf ein Array-Element und berechnen Sie nach dem Scannen die Differenz zwischen den Zeigern auf das aktuelle und das erste Element.
Schritt 6
Rufen Sie die Größe eines dynamischen Arrays ab, das durch ein Framework- oder Bibliotheksobjekt dargestellt wird, indem Sie seine Methode aufrufen. Alle Klassen, die die Funktionalität solcher Arrays kapseln, verfügen über Methoden zum Abrufen der aktuellen Anzahl von Elementen. Zum Beispiel hat die std:: vector Template-Klasse der C++-Standardbibliothek eine size-Methode, die QVector-Klasse des Qt-Frameworks eine count-Methode und die analoge CArray-Klasse der MFC eine GetCount-Methode.