É possível declarar matriz e vetor para armazenar o tipo de dado ponteiro.
A sintaxe é semelhante a que já foi abordada sobre declaração de matrizes e vetores
para tipos de dados primitivos ou do usuário. A diferênça é a utilização do operador (*)
como mostrado na sintaxe abaixo:
Sintaxe
tipo_dado *nome_vetor[<dimensao>];
Onde
tipo_dado: tipo de dado primitivo, struct ou outro
<dimensao>: quantidade de elementos
Exemplo 1: Vetor de ponteiro
#include <stdio.h>
int main ()
{
const int TAMANHO = 3;
int *pnt[3]={NULL,NULL,NULL}; //espaço reservado
int a = 1, b = 2, c = 3;
pnt[0] = &a; //atribuição de ponteiros
pnt[1] = &b;
pnt[2] = &c;
int i;
for ( i = 0; i < TAMANHO; i++)
printf("%d \n", *pnt[i]);
}
Saída
1
2
3
O uso de matriz de ponteiros é feita de forma semelhante ao vetor visto acima. Declaramos uma
matriz de acordo com as dimensões desejadas e atribuímos os ponteiros a cada
linha/coluna como demostrado no exemplo a seguir:
Sintaxe
tipo_dado *nome_matriz[<linhas>][<colunas>];
Onde
tipo_dado: tipo de dado primitivo, struct ou outro
<linhas>/<colunas>: dimensões da matriz
Exemplo 2: Matriz de ponteiro
#include <stdio.h>
int main ()
{
int TAMANHO = 2;
int *pnt[2][2]={{NULL,NULL},{NULL,NULL}};
int a = 1, b = 2, c = 3, d = 4;
pnt[0][0] = &a;
pnt[0][1] = &b;
pnt[1][0] = &c;
pnt[1][1] = &d;
int i,j;
for ( i = 0; i < TAMANHO; i++)
{
for ( j = 0; j < TAMANHO; j++)
{
printf("%d ", *pnt[i][j]);
}
printf("\n");
}
}
Saída
1 2
3 4