Char* und Char[]



  • Hallo!

    Mal ne Frage:

    Wieviel Speicher hat char* ???

    Bei

    char wort[25]
    

    ist mir das klar das wort 25 zeichen umfasst

    ABER:

    wie ist das bei

    char* wort
    

    ? wieviel speicher hat das?

    Char* ist ein zeiger auf char... nur die zeichenkette muss ja eine bestimmte lämge haben sonst wird der speicher ja wieder von anderen variablen überschrieben..

    oder nicht? oder bin ich jetzt total beschränkt???

    gruß
    freak



  • Du musst hier gedanklich unterscheiden zwischen der Zeichenkette und dem Pointer auf die Zeichenkette.

    char* ist ein Pointer auf die Zeichenkette.
    Also er gibt die Adresse im Speicher an, wo die Zeichenkette liegt.
    Er ist in einem 32 Bit System 32 Bit = 4Byte groß.

    Diese Adresse ist der erste Buchstabe der Zeichenkette.
    Der nächste Buchstabe ist dann (char*)+1
    So geht es bis nach dem letzten Buchstaben ein Byte mit dem Wert 0 kommt.

    Bei char myArray[25] reservierst du dir 25 Bytes hintereinander.
    Und myArray ist hier die Adresse des ersten.
    Also technisch wieder 4 Byte groß.
    Aber das Feld ist 25 Byte groß.

    Hoffe, das war jetzt einigermaßen klar 😉

    Noch besser erklärt, und man wird sogar gesiezt:
    http://www.c-plusplus.net/forum/viewtopic.php?t=39497



  • Danke! War sehr verständlich!


Anmelden zum Antworten