Wenn Sie ein array deklarieren und mit einer ersten Größe, sind seine Elemente zunächst leeren strings?
Beispielsweise die Elemente a[20], wenn noch nicht definiert, zuerst würde beginnen als leere Zeichenfolgen (d.h. a[0]=="", a[1]=="", ein[2]=="",.....a[20]==""). Ich bin mir nicht sicher, ob dies korrekt ist oder der Logik, wenn ich mich verwirrend es mit JavaScript.
- Abhängig vom Typ.
- Sie wäre, wenn das array war einer der
std::strings
. Oder andere Benutzer-definierten string-Typ mit einem Standard-Konstruktor, der macht es "leer"ist. - Sie wäre, wenn das array wurde eine
std::vector
als gut. - Das poster hat ein nettes lächeln.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Arrays in C++ halten Sie Elemente eines bestimmten Typs. Ob eine default-initialisiert array enthält leere Zeichenfolgen hängt von der Art der Elemente statt, die durch das array.
Wenn ein array mit default-initialisiert,
Elemente sind auch standardmäßig initialisiert. Für built-in Typen wie
int
,double
,bool
und Zeiger, das bedeutet Keine Initialisierung durchgeführt wird. Sie könnten halten Sie einen beliebigen Wert, und es ist Undefiniertes Verhalten, um aus Ihnen Lesen. Für benutzerdefinierte Typen, die default-Konstruktor aufgerufen wird. Es die Art ist etwas, das Sie repräsentiert einen string, und seine Standard-Konstruktor erzeugt ein Objekt, das eine leere Zeichenfolge ist, dann ja, eine Standard-Initialisierung der ein solches array könnte gesagt werden, es zu verlassen, voll von leeren Saiten:Nun, es ist eine Initialisierung aufgerufen Wert-Initialisierung, die die Wirkung der null-initializing built-in-Typen und ruft den default-Konstruktor für user defined types. Dies ermöglicht Ihnen zum erstellen von arrays von null-initialisiert built-in-Objekte:
char chars[42] = {}; // Contains 42 empty strings
das ist nur verwirrend, das poster und es ist ein nutzlos Konzept, denn es könnte nie speichern 42 nicht-leeren Zeichenketten.char a[20];
nicht initialisieren, zu nichts. Es ist undefiniert, zu Lesen.
char a[20] = {};
initialisiert das gesamte array auf null ist (null-Abschlusszeichen) .. d.h.: a ist eine leere Zeichenfolge.
char a[20]; a[0] = '\0';
setzt die ersten Zeichen bis der null-terminator. Ausführlicher, aber möglicherweise effizienter Art und Weise erstellen Sie einen leeren string.
std::string a;
Erstellt eine leere C++ - string, der bereit ist zu verwenden.
char a[20];
nicht initialisieren ..." - es hängt davon ab, wo die definition erfolgt. Wenn es im Datei-Bereich, initialisiert er alle Mitglieder auf 0.