Clique sobre os tópicos listados abaixo para navegar até o conteúdo desejado.

  1. Entender o uso de ponteiro em matrizes e vetores

É 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
  1. 07/10/2024 - revisão 2 - Correção: link 'Anterior', sintaxe; ajustes pontuais
  2. 02/10/2023 - revisão 1 - Correção em referências, erros gramaticais
  3. 19/05/2023 - versão inicial