Ponteiros múltiplos

Por enquanto, trabalhamos exclusivamente com ponteiros simples, que consistem em uma variável armazenar o endereço de memória de outra. No entanto, já discutimos diversas vezes que ponteiros também são variáveis.

Portanto, seus endereços podem ser armazenados por outras variáveis também, como ilustra a figura a seguir:

Ponteiros múltiplos

⚠️ Níveis

Embora usualmente ponteiros múltiplos sejam chamados de "ponteiro de ponteiro" e "ponteiro duplo", é importante enfatizar que a linguagem de programação C não impõe limite quantos níveis de apontamento podem existir.

👨‍💻 Criando um ponteiro múltiplo

A declaração de ponteiro múltiplo é bastante simples: basta adicionar mais um operador de indireção (*) a cada etapa. Acompanhe:

#include<stdio.h>
#include<stdlib.h>

int main(void){
    int a = 10;
    int *pontSimples = &a;
    int **pontDuplo = &pontSimples;
    int ***pontTriplo = &pontDuplo;
}

Para consultar os valores que os ponteiros múltiplos representam, precisamos utilizar o operador de indireção (*) na quantidade equivalente ao nível do ponteiro, como feito na declaração.

Acompanhe:

#include<stdio.h>
#include<stdlib.h>

int main(void){
    int a = 10;
    int *pontSimples = &a;
    int **pontDuplo = &pontSimples;
    int ***pontTriplo = &pontDuplo;

    printf("Valor de A: %d\n", a);
    printf("Valor de A: %d\n", *pontSimples);
    printf("Valor de A: %d\n", **pontDuplo);
    printf("Valor de A: %d\n", ***pontTriplo);
}

🧠 Teste seus conhecimentos

João criou um ponteiro triplo C (que aponta para B, que aponta para A) na linguagem de programação C. Ao utilizar o comando *C, qual valor será obtido por João?

  • A

    O endereço de memória de B.

  • B

    O conteúdo de A.

  • C

    O endereço de memória de C.

  • D

    O conteúdo de B.

  • E

    O endereço de memória de A.

📖 Bibliografia

Livros

  • Backes, A. (2018). Linguagem C - Completa e Descomplicada.