> Pointer und [] (Arrays) sind in C/C++ austauschbar.
Das ist das größte Missverständniss, dass es in C
überhaupt gibt. Weil das oben gesagte einfach nicht stimmt.
Ein Pointer ist ein Pointer und ein Array ist ein Array.
Den einzigen Zusammenhang den es gibt, ist der, dass unter
bestimmten Umständen der Name eines Arrays alleine (also
ohne Indizierung) als Pointer auf das 0-te Element des
Arrays aufgefasst wird. Das bedeutet aber nicht, dass
ein Array ein Pointer ist, oder umgekehrt.
Insbesondere ist
> Man könnte auch schreiben
> char array[][] = { "str1", ... };
> char *array[] = { "str1", ... }; ist absolut gleichwertig.
totaler Unsinn. Die beiden sind absolut nicht gleichwertig!
Im ersten Fall wird ein 2-dimensionales Array angelegt (wenn
es dann auch noch richtig deklariert werden würde), dass mit
dem Inhalt "str1", "str2", etc. gefüllt wird. Im zweiten
Fall werden die Strings "str1", "str2", etc. als String-Konstante
angelegt, und das Array array enthält Zeiger auf diese
String Konstanten.
Im ersten Fall sind die Strings änderbar, im zweiten Fall sind
sie es nicht, da String-Literale automatisch als Konstante
gehandhabt werden!