Am plecat de la un tablou de pointeri intregi.
Din cate stiu p = *(p+i);
Code: Select all
int *p[2][3];
*p[i][j]
*(*p[i]+j) - OK
(*(*(*p+i))+j) - NOK
Code: Select all
int *p[2][3];
*p[i][j]
*(*p[i]+j) - OK
(*(*(*p+i))+j) - NOK
Code: Select all
// tabloul 'p' privit ca un șir de pointeri spre 'int':
int ** z = (int**)p;
// pointer spre începutul rîndului 'i':
int ** ri = z + i * 3;
// pointer spre elementul 'j' din rîndul 'i'
int ** eij = ri + j;
// elementul p[i][j]:
int * y = *eij;
// sau
int * y = *( (int**)p + i * 3 + j );