Declarações de Variáveis Ponteiro
A forma de declarar que uma variável foo aponta para o tipo t é:
t *foo;Para lembrar essa sintaxe, pense: “se você desreferenciar foo, usando o operador ‘*’, o que você obtém é do tipo t. Logo, foo aponta para o tipo t.”
Assim, podemos declarar variáveis que armazenam ponteiros para esses três tipos, da seguinte maneira:
int *ptri; /* Ponteiro para int. */
double *ptrd; /* Ponteiro para double. */
double (*ptrda)[5]; /* Ponteiro para double[5]. */A declaração int *ptri; significa: “se você desreferenciar ptri, obtém um int.” Já double (*ptrda)[5]; significa: “se você desreferenciar ptrda, e então indexar por um inteiro menor que 5, você obtém um double.” Os parênteses expressam o fato de que você deve desreferenciar primeiro, depois indexar.
Compare isso com a seguinte declaração:
double *aptrd[5]; /* Array de cinco ponteiros para double. */Como o operador ‘*’ tem precedência sintática menor que a indexação, double *aptrd[5] significa: “se você indexar aptrd por um inteiro menor que 5, e então desreferenciar, obtém um double.” Portanto, *aptrd[5] declara um array de ponteiros, não um ponteiro para array.
Atualizado
Isto foi útil?