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:
⚠️ 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.