Dereferentiere pointeri

Intrebari despre limbajul C++, standardul C++, STL, OOP in C++ sau alte subiecte nelegate de VisualC++
Post Reply
stelian_2681
Junior
Junior
Posts: 36
Joined: 24 Jun 2013, 23:25
Judet: Olt

Dereferentiere pointeri

Post by stelian_2681 » 03 Jun 2017, 21:42

Cum se dereferentiaza urmatoarea expresie ?
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
Ultima expresie imi da batai de cap. Astept un indiciu.



Viorel
Microsoft MVP
Microsoft MVP
Posts: 286
Joined: 13 Jul 2007, 12:26

Re: Dereferentiere pointeri

Post by Viorel » 04 Jun 2017, 11:56

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

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 );

Post Reply