É possível declararmos matrizes e vetores 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. A diferênca é a utilização do operador (*):
Sintaxe
tipo_dado *nome_variavel[<dimensao>];
tipo_dado *nome_variavel[<linhas>][<colunas>];
Onde
tipo_dado: tipo de dado primitivo, struct ou outro
<dimensao>: quantidade de elementos
<linhas>/<colunas>: dimensões da matriz
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. Declaramos uma
matriz de acordo com as dimensões desejadas e atribuímos os ponteiros a cada
posição como demostrado no exemplo a seguir:
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