?
flowschi schrieb:
Ich komme dabei aber noch einer nächsten Frage:
char z[3][10] = {"das", "istein", "test"};
printf("! z[2]: %s\n", z[2]);
printf("! z[2]: %s\n", &z[2]);
Also array direkt angelegt, ohne pointer. Der printf-Befehl sieht allerdings genauso aus, und funktioniert auch genauso. Warum ist das offenbar trotzdem ein Pointer, obwohl z anders deklariert wurde? Und warum funktionierte die dritte Zeile genauso?
Wenn du in C ein Array deklarierst und initialisierst(mit einem Wert belegst), dann macht der Compiler nichts anderes als für die Werte einen zusammenhängenden Speicherplatz zu reservieren und einen Pointer auf den Anfang von diesem Speicherplatz zu setzten.
(Zusammenhängend heißt: die Speicherstellen, die mit den Werten belegt sind liegen alle strikt beieinander und _nicht_ ein Wert irgendwo im "Anfang" des Speicher und eins am "Ende". )