duvida sobre ponteiros de ponteiros em struct

duvida sobre ponteiros de ponteiros em struct

por Eric Lee -
Número de respostas: 1

ola, usando como o struct do EP2

typedef struct {

   int nL;         /* numero de linhas da imagem */

   int nC;         /* numero de colunas da imagem */

   float **pixel;  /* matriz com a imagem */

} Imagem;


sendo Imagem *foto, para acessar  a matriz que o ponteiro pixel aponta seria

*foto.**pixel[i][j]

ou

*foto->**pixel[i][j]?

estou cometendo algum erro absurdo? 

Em resposta à Eric Lee

Re: duvida sobre ponteiros de ponteiros em struct

por Claynon Souza -

Vamos começar pela segunda parte, a parte do ponteiro pixel:

Você ou usa o * ou os []s, eles tem papel semelhantes. A forma mais recomendável de se escrever nesse caso é pixel[i][j], se fosse usar os asteriscos você teria que fazer algumas operações que deixaria seu código no mínimo estranho, para não dizer quase ilegível.

Agora a primeira parte:

Aqui novamente você usa um ou outro, nesse caso * ou ->

(*foto).x é a mesma coisa que foto->x

Note que se for usar o asterisco nesse caso você deve usar parênteses (isso se dá devido a precedência de operadores do C). Assim como no caso do pixel[i][j] tem uma forma mais elegante de se escrever, nesse caso nota-se que é foto->x

Então a forma mais elegante (e mais importante que elegância é estar certo) é foto->pixel[i][j]