Wie würde ich einen Zeiger deklarieren, der auf 2D-Array von Zeichenzeigern zeigt. WieZeiger auf 2d Array von Zeigern
char *ar[10][10];
In meinem Verständnis ist dieses Array als Array von Arrays gespeichert, so ar
verweist auf ein Array von Zeigern, von denen jeder auf eine Spalte in diesem Array verweist. Es hat also drei Ebenen von Zeigern. So sollte es
char ***p;
So sowohl ar
und p
deklariert werden sind vom gleichen Typ. Aber wenn ich wie ein 2d-Array für z. p[0][0]
, gibt es einen Segmentierungsfehler. Warum passiert das und was wäre die korrekte Art, zu deklarieren?
bekommen glaube ich Ihnen eine Vorstellung bekommen von hier http://stackoverflow.com/questions/13554244/how-to-use-pointer-expressions-to-access-elements-of-a-two-dimensional-array-in – Janmenjaya
Arrays! = Zeiger, Ein Array ist ein zusammenhängender Speicherblock, so daß "[10] [10]" eine Platte des Speichers ist, die 10 Felder von 10 'char *' enthält. Das heißt, es ist identisch mit einem 'char * [100]', keine Ahnung, woher du die Idee der Dreifach-Indirection herkommst, aber wenn du '*** p' siehst, trete zurück und frage dich, es gibt einen besseren Weg. Es gibt einen Grund, warum der Begriff [Drei-Sterne-Programmierer] (http://c2.com/cgi/wiki?ThreeStarProgrammer) kein Kompliment ist. –