Zeiger und 2-dimensonales Array
-
hi.
habe folgenden code:
char strings[5][2]={{0,'a'},{1,'b'},{2,'c'},{3,'d'},{4,'e'}}; char *pStr = 0; pStr = & strings;Ist das überhaupt richtig? Der Zeiger soll auf das ganze feld strings zeigen.
möchte jetzt via printf den Buchstaben 'b' angezeigt bekommen, aber unter benutzung des pointers. WIE geht das??
-
Hallo,
o-ta schrieb:
hi.
habe folgenden code:
char strings[5][2]={{0,'a'},{1,'b'},{2,'c'},{3,'d'},{4,'e'}}; char *pStr = 0; pStr = & strings;Ist das überhaupt richtig?
Hast du es ausprobiert? Wenn ja, dann hätte sich dein Compiler beschweren müssen.
Merke: Der Bezeichner eines 1D-Arrays vom Typ T ist implizit in einen Pointer T* konvertierbar. Für Arrays mit N Dimensionen (N > 1) ist eine implizite Konvertierung des Array-Bezeichners nach (*T)[N - 1] möglich, aber nicht nach T*!. Siehe dazu auch: http://www.c-plusplus.net/forum/viewtopic-var-t-is-58906.html (C++-FAQ).möchte jetzt via printf den Buchstaben 'b' angezeigt bekommen, aber unter benutzung des pointers. WIE geht das??
In C++ benutzt man normalerweise cout. Deswegen bekommst du von mir ein Beispiel mit selbigem :p. (Dieses Beispiel umzuschreiben, sollte aber nicht das Problem darstellen. Wenn doch: Frag nach :)).
int main() { char strings[5][2]={{0,'a'},{1,'b'},{2,'c'},{3,'d'},{4,'e'}}; char (*p)[2] = strings; cout << "b = " << *(*(p + 1) + 1) << endl; cout << "oder b = " << p[1][1] << endl; cout << "oder b = " << (*(p + 1))[1] << endl; //edit: Wie sieht wohl die noch verbleibende Möglichkeit aus? :-) return 0; }Gruß, Caipi.