si e' vero,
ma non e' certo la stessa cosa perche' in un array bidimensionale char A[2][3] viene creato un array di tre elementi di tipo array di 2 char quindi le dimensioni sono ben chiare e non modificabili,
se scrivendo char* A[3] viene creato un solo array di tre elementi ed ognuno di questi deve essere un char*.
quando alloco char A[2][3] occupo 6 bytes + 3 puntatori(const) mentre se alloco char* A[3] occupo solo lo spazio per 3 "dangling pointer".. e vinco tre possibili segmentation fault..
ed in piu..
se voglio scorrere tutti gli elementi con un unico puntatore (tramite l'aritmetica dei puntatori com'era il mio problema iniziale) se uilizzo char* A[3] non e' possibilie in modo facile perche' i singoli char non sono allocati consecutivamente come in A[2][3].

Rispondi quotando