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.