2 Dimensionales Array und Pointer auf Pointer
-
Hallo zusammen, ich habe eine kurze Frage in C:
int matrix[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; // Ich dachte ich weise hier **ppmatrix die (start)Adresse von matrix zu **ppmatrix = matrix; // Die Ausgabe sollte (normalerweise die Position [0][0] von ppmatrix liefern: printf("**ppmatrix: %d", **ppmatrix); // Segmentation Fault
Lieder funktioniert das so nicht. Aber wieso? Sollte nicht zumindest die Ausgabe der ersten Position von matrix korrekt sein?
-
Ein 2D-Feld wie
int matrix[3][3]
ist kein Doppelpointer.
Zwischenint matrix2[3][3] = {{1,2,3}, {4,5,6}, {7,8,9}}; // und int matrix1[3*3] = { 1,2,3 , 4,5,6 , 7,8,9 };
ist im Speicher kein Unterschied.
Darum
int *ppmatrix = matrix; printf("*ppmatrix: %d", *ppmatrix);
Es gibt auch Arrays von Pointern auf Variablen (zb. argv).
Das sind dann deine Doppelpointer. Die kann man auch über die Array-Schreibweise mit den [] ansprechen.Die werden aber anders definiert.