char und char pointer



  • Moin, allerseits.
    Verzweifelt habe ich versucht, zu ergooglen, wieso folgendes mit
    chars auf dem Heap funktioniert. Andererseits kam ich auch nicht
    auf die richtigen Suchwörter...

    Man benötigt keine Angabe, wieviele Elemente das chararray speichert.
    Man legt es einfach auf dem Heap an

    char * pZeichen;
    pZeichen = "hallo";
    cout << pZeichen << " - " << strlen(pZeichen) << " Zeichen" << endl;
    pZeichen = "hallo und tschüss";
    cout << pZeichen << " - " << strlen(pZeichen) << " Zeichen" << endl;
    

    Eigentlich wird doch Platz für ein Zeichen reserviert und pZeichen
    als Pointer die Adresse zum Wert zugewiesen???
    Wie kann ich also ganze chararrays zuweisen? Und ganz, ohne darauf
    zu achten, wieviele Elemente es hat?



  • Es wird nirgends Platz für ein Zeichen reserviert.

    // Reservierung eines *Zeigers auf ein Zeichen* - kein Speicher für ein Zeichen
    char * pZeichen;
    
    // In C werden Strings so gehandhabt, dass ein Zeiger auf das erste Zeichen des Strings zeigt und dann einfach solange jedes darauffolgende Zeichen (Byte) zum String gehört bis im Speicher 0 steht
    
    // Zuweisung der Adresse des ersten Zeichens des Literals "hallo" an pZeichen
    pZeichen = "hallo";
    
    // Ein literal ist ein konstanter string der as-is im programm vorkommt. der hat bereits von anfang an speicher, muss ja irgendwo liegen (daten segment)
    

    MfG SideWinder


Anmelden zum Antworten