Dereferentiere pointeri

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++

Dereferentiere pointeri

Mesajde stelian_2681 » 03 Iun 2017, 21:42

Cum se dereferentiaza urmatoarea expresie ?
Am plecat de la un tablou de pointeri intregi.
Din cate stiu p[i] = *(p+i);

Cod: Selectaţi tot
int *p[2][3];

*p[i][j]
*(*p[i]+j) - OK
(*(*(*p+i))+j) - NOK


Ultima expresie imi da batai de cap. Astept un indiciu.
stelian_2681
Junior
Junior
 
Mesaje: 30
Membru din: 24 Iun 2013, 23:25
Judet: Olt

Re: Dereferentiere pointeri

Mesajde Viorel » 04 Iun 2017, 11:56

Cred că dereferențierea unui tablou ’int t[2][3]’ într-o expresie ‘t[i][j]’ este ‘t+i*3+j’.

Cod: Selectaţi tot
// 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 );
Viorel
Microsoft MVP
Microsoft MVP
 
Mesaje: 281
Membru din: 13 Iul 2007, 12:26


Înapoi la Limbajul C++

Cine este conectat

Utilizatorii ce navighează pe acest forum: Bing [Bot] şi 3 vizitatori

cron