Kurze Frage zum Array



  • Abend.

    char v [2] = {'1','2'};
    cout<<v<<endl;  // Gibt aus 12Ç ↕
    
    char v [3] = {'1','2'};
    cout<<v<<endl;  // Gibt aus 12
    

    Muss ich etwa immer eine höhere Element Anzahl festlegen als ich eigentlich benutze?

    Ich dachte eigentlich der Compiler würde das Array selbst Nullterminieren.

    Und was haltet ihr von dieser Schreibweise?
    Kann ich mir hier auch einfach den Nullterminator sparen? das Array steht ja hier auf v[3]; mit cout würde ich ja die richtige Werte (12) ausgegeben bekommen.

    char v [3] = {'1','2','\x00'};
    cout<<v<<endl;  // Gibt aus 12
    


  • Arrays werden natürlich nicht automatisch nullterminiert. Im Gegensatz zu Stringliteralen:

    char s[] = "Hallo, Welt";
    


  • DatenVerwalter schrieb:

    char v [2] = {'1','2'};
    cout<<v<<endl;  // Gibt aus 12Ç ↕
    

    Das Array hat 2 Elemente, wo soll da nun ein drittes Element für die Nullterminierung hineinpassen? Das geht natürlich nicht.

    DatenVerwalter schrieb:

    char v [3] = {'1','2'};
    cout<<v<<endl;  // Gibt aus 12
    

    Wenn du weniger Elemente angibst als die Arraygröße, werden die restlichen Elemente automatisch mit 0 initialisiert und 0=='\0' .

    DatenVerwalter schrieb:

    Muss ich etwa immer eine höhere Element Anzahl festlegen als ich eigentlich benutze?

    👍



  • Gugelmoser schrieb:

    DatenVerwalter schrieb:

    Muss ich etwa immer eine höhere Element Anzahl festlegen als ich eigentlich benutze?

    👍

    Nö, Du musst nur wissen, wieviel Du WIRKLICH benutzen willst.


Anmelden zum Antworten