pointer auf array
-
hallo,
das problem ist simpel, aber ich bin wohl zu dumm dafuer. ich will einen pointer auf ein 2d string array zeigen lassen.
char *str[][2]= { "1", "eins", "2", "zwei" }; char (*pt)[2]; // <- offensichtlich falsch pt = str; // <- geht nicht!
danach will ich zb mit pt[0][1] auf "eins" zugreifen koennen.
die frage. wie muss pt definiert werden?
-
typedef ist dein freund:
typedef char* zeiger;
typedef zeiger* zeiger_auf_zeiger; //== 2dim array
typedef zeiger_auf_zeiger* zeiger_auf_2dim_array;zeiger_auf_2dim_array ist somit ein ... ?
-
ich glaube leider nicht
denn eine
zeiger_auf_2dim_array pt;
funktioniert leider nicht. habe ich etwas falsch verstanden? bei der definition eines pointers auf ein 2d *char array muss ich meines wissens nach unbedingt auch die dimension (spaltenanzahl) angeben ( hier [2]). wenn nicht, weiss der compiler nie wie er rechnen soll.
mein beispiel von oben
aus pt[1][0] wird [2] ( 1 * 2) + 0;
aus pt[2][1] wird [5] ( 2 * 2) + 0;und worin besteht der unterschied zwischen
zeiger_auf_zeiger z2 und char **z2 ?fragen ueber fragen
die compiler meldung dazu:
error C2440: '=' : 'char ()[11][2]' kann nicht in 'char *** ' konvertiert werden
-
ich habe leider noch keine loesung gefunden.
noch jemand ideen?
-
Du hast ein "Array auf Array[2] von Pointern" und suchst einen "Pointer auf Array[2] von Pointern". Analog zu char a[2] => char *pa;
Damit isses dann einfach:
char *(*pt)[2] = str; puts(pt[0][1]); /* => "eins" */
shade: ein 2D-Array und ein Pointer auf einen Pointer sind 2 völlig verschiedene Dinge
-
klasse. funktioniert einwandfrei! warum bin ich da nicht selbst drauf gekommen?