dato un ..array di array.. dichiarato cosi..
int A[3][3];
ho bisogno di inizializzarlo..
non mi interessa farlo nelle classiche maniere
lo voglio fare con l'aritmetica dei puntatori.
--------------------------
// CASO 1)
for(int i=0; i<9; i++ ){
*(A+i)=0;
cout << i;
}
// errore di tipo.. ok!
--------------------------
// CASO 2)
for(int i=0; i<9; i++ ){
**(A+i)=0;
cout << i;
}
//segmentation fault ! (subito) ???
--------------------------
// CASO 3)
for(int i=0; i<9; i++ ){
*(*A + i)=0;
cout << i;
}
// funziona correttamente..
---------------------------
perche' nel CASO 2 mi da subito segmentation fault
e non mi stampa niente?
mi aspettavo 012 e poi segmentation fault
o almeno 0 e poi segmentation fault.
..quando i vale 0 questo *(*A)=0 e' lecito..
al massimo qui *(*A+1)=0 iniziano i problemi.. ma anche no!
perche' dovrebbe corrispondere alla prima cella del secondo array..
qualcuno sa il motivo di questo comportamento, a mio parere, "un po' anomalo".. ??
..forse non ho ben capito come vengono allocati gli array bidimensionali in memoria.. e quindi applico l'aritmetica dei puntatori in maniera erronea..