ExpertiDict

C · Avançado · Português · Técnico

ponteiro para array

/põ.ˈtej.ɾu ˈpa.ɾa a.ˈhej/substantivo

Ponteiro cujo alvo é um array inteiro, declarado como int (*p)[3]. A aritmética nele avança o tamanho do array todo, ao contrário do array de ponteiros int *p[3].

Onde usar

Surge ao passar matrizes para funções, como int (*m)[N], e ao ler declarações complexas. Em review, a confusão entre int *p[3] e int (*p)[3] é fonte comum de erro.

Em código

#include <stdio.h>
int main(void) {
  int m[2][3] = {{1, 2, 3}, {4, 5, 6}};
  int (*p)[3] = m;  // aponta para a linha 0
  p++;              // pula 3 ints
  printf("%d\n", (*p)[0]);  // 4
}

Exemplos

Declara um ponteiro para array de três ints para percorrer a matriz por linhas.

Sem os parênteses vira um array de ponteiros, não um ponteiro para array.

Cuidado

Trocar o lugar dos parênteses: int *p[3] é um array de três ponteiros para int, não um ponteiro para array.

Sinônimos

pointer to array

Antônimos

array de ponteiros

Veja também

Todos os termos de C