bluna schrieb:
> Aber trotzdem, rein vom logischen:
>
>
>
> Damit reservier ich mir irgendwo im RAM 10 Bytes.
richtig.
Du hast das im Speicher erzeugt
token
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
10 Speicherzellen, denen du den Namen 'token' gegeben hast.
> token zeigt mir auf das erste dieser 10 Bytes,
nein.
> ist also ein Zeiger auf
> char (char *).
Auch nicht.
Was du hier beschreibst, würde so aussehen
token
+-----+
| o------+
+-----+ |
v
+---+---+---+---+---+---+---+---+---+---+
| | | | | | | | | | |
+---+---+---+---+---+---+---+---+---+---+
und wie man sieht, ist das etwas völlig anderes.
> Kann ich einen Zeiger nornal nicht anweißen, woanders hinzuzeigen?
Du hast keinen Zeiger.
token ist der Name eines Arrays.
> Ok, macht natürlich keinen Sinn das ganze, aber vom logischen her, wieso
> funkt das nicht?
Weil du etwas missverstanden hast.
In manchen Fällen fungiert der Name eines Arrays als Zeiger auf das
erste Element. Das bedeutet aber nicht, dass er ein Zeiger IST!
Wenn du eine Variable i hast
int i = 5;
dann ist bei der Verwendung von i
j = i;
immer der Inhalt (also die 5) gemeint.
Nur bei Arrays ist das anders. Hast du ein Array
char a[10];
und verwendest du das Array 'als Ganzes'
k = a;
dann steht dieses a hier NICHT für die Inhalte des Arrays (so wie beim
i), sondern für die Startadresse das Arrays im Speicher. Deshalb ist a
aber kein Pointer. a ist immer noch ein Array mit einer im Speicher
festen Speicheradresse.