sizeof von char pointer = 4?



  • char *pchar[] = { "Blah", "Blah1"};

    int groesse1 = sizeof pchar;
    int groesse2 = sizeof pchar[1];

    Wieso ist groesse1 oder groesse2 jetzt 4 und nicht jeweils 1?

    Ein char hat doch genau ein Byte oder hängt das mit der Adressierung zusammen (32Bit=4 Byte)?



  • ein Pointer hat i.d.R. 4 Byte Laenge. mit 1 Byte koenntest du ja nur 256 Adressen ansprechen und das ist bisschen wenig fuer normale Anwendungen 🙂
    sizeof(pchar[0][0]) waere dann ja ein char und haette die Laenge 1.



  • Gewöhnlich haben Zeiger die Größe eines dafür vorgesehenen Registers. Hier sind die Register der CPU 8086 veranschaulicht:
    http://www.inf.hs-anhalt.de/Service/Assembler/Register8086.htm



  • pli schrieb:

    ein Pointer hat i.d.R. 4 Byte Laenge. mit 1 Byte koenntest du ja nur 256 Adressen ansprechen und das ist bisschen wenig fuer normale Anwendungen 🙂

    Lag ich also richtig mit den 32Bit und der Adressierung.
    Aber...

    pli schrieb:

    sizeof(pchar[0][0]) waere dann ja ein char und haette die Laenge 1.

    Wieso ist das jetzt 1 Byte? Das ist doch immer noch ein Pointer?



  • anonym schrieb:

    Wieso ist das jetzt 1 Byte? Das ist doch immer noch ein Pointer?

    Nein, das ist ein char.



  • pli schrieb:

    sizeof(pchar[0][0]) waere dann ja ein char und haette die Laenge 1.

    Die String sind ja wieder array of char und somit ist es ein zweidimensionales Array. pchar[0][0] greift auf das erste Zeichen zu und das ist ein char und der hat 1 byte.

    Alles klar.


Log in to reply