Ponteiros: apontando para o mesmo endereço

Eis um aspecto interessante da linguagem C: qualquer número de ponteiros pode apontar para o mesmo endereço. Por exemplo, você pode declarar p, q, e r como ponteiros de inteiros e defini-los para apontar para i, assim:

  int i;
  int *p, *q, *r; 


  p = &i;
  q = &i; 
  r = p;  

Observe que neste código, r aponta para o mesmo que p, que é i. Você pode atribuir ponteiros uns aos outros, e o endereço é copiado da direita para a esquerda durante a atribuição. Ao executar o código acima, você verá algo assim:

A variável i agora tem 4 nomes: i, *p, *q e *r. Não há limite de número de ponteiros que podem conter (e apontar para) o mesmo endereço.