Johann L. schrieb:
> Nur weil sie in der Verwendung teilweise ähnlich sind, sind Arrays noch
> lange keine Pointer — ausser bei Funktionsparametern, wo es tatsächlich
> das "Array decays to Pointer" gibt.
Eigentlich gibt es das nicht nur dort, sondern fast überall. Auch z.B.
der Dereferenzierungs-Operator kann ja auf Arrays angewendet werden.
Selbst die Index-Operation x[n] ist auch nur definiert als äquivalent zu
*(x+n).
Aber leider ist eben trotzdem nur fast überall, und die Unterscheidung
ist sehr wichtig.
Karl Heinz Buchegger schrieb:
> So, so. Der Arrayname ist ein Pointer. Warum geht dann das nicht
Naja, der Klassiker ist doch eher sowas wie:
1 | void funktion(char arr[])
|
2 | {
|
3 | for (size_t i = 0; i < sizeof arr; i++)
|
4 | {
|
5 | putchar(arr[i]);
|
6 | }
|
7 | }
|
mit einer Frage wie: "Warum werden hier nur die ersten vier Zeichen
ausgegeben?"