Curso de C
Ponteiro para Ponteiro
Você está em: MarMSX >> Cursos >> C
Um ponteiro é uma variável que armazena um endereço de memória que guarda um dado. Ex:
#include <stdio.h>
int i=4;
int *p;
main()
{
p=&i;
printf("Localização de i: %x\n", p);
}
Saída:
Localização de i: EC9
Entretanto, o ponteiro também está locado em algum endereço da memória e também pode ser referenciado. Exemplo:
#include <stdio.h>
int i=4;
int *p;
main()
{
p=&i;
printf("Localização de i: %x\n", p);
printf("Localização de p: %x\n", &p);
}
Saída:
Localização de i: ED9
Localização de p: 1131
Graficamente:
┌─────────┬──────┐
│ Memória │ Dado │
├─────────┼──────┤
i │ 0ED9H │ 04 │ <---+
├─────────┼──────┤ |
│ ... │ │ |
├─────────┼──────┤ |
p │ 1131H │ 0ED9 │ ----+
└─────────┴──────┘
O ponteiro para ponteiro "q" será criado, fazendo referência para "p". Note que mais um asterisco "*" foi adicionado para esse tipo de ponteiro.
#include <stdio.h>
int i=4;
int *p;
int **q;
main()
{
p=&i;
q=&p;
printf("Localização de i: %x\n", p);
printf("Localização de p: %x\n", &p);
printf("Localização de p: %x\n", q);
}
Saída:
Localização de i: EEF
Localização de p: 115F
Localização de p: 115F