Ich lerne über Zeiger:Zeiger auf 2D-Arrays C, C++
int x[10];
int *p = &x
dies einen Zeigertyp int
auf das erste Element machen würde. Also, wenn ich 2D-Array hätte, muss ich Doppelzeiger verwenden: der erste Zeiger würde auf die zweite Dimension des Arrays zeigen. Das bedeutet:
int x[3][4] = {{1,2,3,4},{5,6,7,8},{9,9,9,9}};
und wenn ich darauf hinweisen möchte, muss ich die Größe der zweiten Dimension wie folgt deklarieren, oder?
int *p[4] = x;
oder gibt es eine andere Art und Weise durch die Eingabe: int **p
; ?
und int *p[4]
ist Array von Integer-Zeigern, die 4 * (sizeof(int*))
, rechts dauert?
Nur beiseite: Versuchen Sie alle Zeiger in C++ zu vermeiden. Verwenden Sie 'std :: vector' oder' std :: array' anstatt C-artigen Arrays. – xtofl
"_'int * p [4]' ist ein Array von Integer-Zeigern, die '4 * (sizeof (int *))', richtig? _ "- Ja. Und ** immer ** kompilieren mit aktivierten Warnungen ('-Wall -Wextra'). Beim Kompilieren von Code werden Warnungen zu inkompatiblen Zeigertypen angezeigt. Somit gibt es Ihnen einen Hinweis darauf, dass etwas nicht stimmt. –
gut .. mingw32-g ++. Exe -o ............................ Prozess beendet mit Status 0 (0 Minuten, 0 Sekunden) 0 Fehler, 0 Warnungen (0 Minuten, 0 Sekunden) und: int x [3] [4] = {{1,2,3,4}, {5,6,7,8 }, {9.987,9,9}}; int (* p) [4] = x; printf ("% d", p [2] [1]); printf ("\ nsize von * p ist:% d \ n", sizeof (p)); ------------------------------------------------- ------------- Ausgabe: Größe von * p ist: 4 –