Curso de C
Ponteiro para Ponteiro


  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



<< Anterior Linguagem C Próxima >>


/MARMSX/CURSOS/C