sto imparando circa puntatori:Puntatori a 2D array C, C++
int x[10];
int *p = &x
Questo sarebbe un tipo di puntatore int
al primo elemento. Quindi, se avessi un array 2D, ho bisogno di usare un doppio puntatore: il primo puntatore punta alla seconda dimensione dell'array. Ciò significa:
int x[3][4] = {{1,2,3,4},{5,6,7,8},{9,9,9,9}};
e quando voglio puntare ad esso devo dichiarare la dimensione della seconda dimensione come questo, giusto?
int *p[4] = x;
o c'è un altro modo digitando: int **p
; ?
e int *p[4]
è una matrice di puntatori interi che prende 4 * (sizeof(int*))
, giusto?
Solo a parte: prova a evitare tutti i puntatori del tutto in C++. Usa 'std :: vector' o' std :: array' invece di matrici in stile C. – xtofl
"_'int * p [4]' è una matrice di puntatori interi che accetta '4 * (sizeof (int *))', giusto? _ "- Sì. E ** sempre ** compilare con avvisi abilitati ('-Wall -Wextra'). Noterai quindi gli avvertimenti sui tipi di puntatori incompatibili durante la compilazione del codice. Quindi ti darà un'indicazione che qualcosa non va. –
well .. mingw32-g ++. Exe -o ............................ Processo terminato con stato 0 (0 minuti, 0 secondi) 0 errori, 0 Ammonizioni (0 minuti, 0 secondi) e: 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 di * p is:% d \ n", sizeof (p)); ------------------------------------------------- ------------- output: dimensioni di * p è: 4 –