*posicoes = (Coordenada*)malloc(tam*sizeof(Coordenada));
After that, you could access (*posicoes)[k].x
, but not posicoes[k]->x
. If you use a temporary pointer for a moment, you'll notice it immediately:
Coordenada * ptr = (Coordenada*) malloc(tam*sizeof(Coordenada));
*posicoes = ptr;
ptr[k].x = 1; // ok
(*posicoes)[k].y = 2; // ok, same as ptr[k].y = 2;
// posicoes[k]->x = 0; // NOT ok