É possível declararmos matrizes e vetores utilizando o tipo de dado ponteiro. A sintaxe é semelhante a
que já foi abordada sobre declaração de matrizes e vetores de 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
linha/coluna: 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