06 dezembro 2019

C - Introdução à ponteiros (parte 1)


Ponteiros podem ser tão complicados quanto o final de Evangelion, mas com a prática eles deixam de serem difíceis ヽ(*・ω・)ノ

Recomendação de anime: Neon Genesis Evangelion (1995)


Exemplo

Digamos que três amigos - Shinji, Asuka e Rei - tenham telefones e endereços diferentes. Dessa forma teremos:


Assim, falar da Asuka é a mesma coisa que falar do seu telefone 1234. Falar da Rei é a mesma coisa que falar do seu telefone 3452 e falar do Shinji é a mesma coisa que falar do seu telefone 7863. Logo:
  • Asuka = 1234;
  • Rei = 3452;
  • Shinji = 7863;
Que em C é a mesma coisa quando declaramos variáveis:
  • int a = 1234, r = 3452, r = 7863;


Visualmente seria algo como:


Se fosse em C e quisermos imprimir o telefone de cada um faríamos o seguinte:
  • printf("%d", Shinji)                               ⇒      7863
  • printf("%d", Asuka)                              ⇒      1234
  • printf("%d", Rei)                                   ⇒      3452 

E caso quisermos imprimir o endereço faríamos isto:
  • printf("%s", &Shinji)                            ⇒      Rua Japão
  • printf("%s", &Asuka)                           ⇒      Rua Alemanha
  • printf("%s", &Rei)                                ⇒      Avenida Nerv


Para indicar o endereço de uma variável usamos o operador &

Digamos agora que entre outra pessoa no grupo de amigos. Ela se chama Misato. Misato está morando mais perto do trabalho, mas ainda não conseguiu um telefone e por isso está utilizando o telefone de Shinji. Visualmente ficaria:
Dessa forma o telefone de Misato é o endereço de Shinji. Em C ficaria:
  • Misato = &Shinji;

E se quisermos ver o telefone em si, usamos o operador * (*Misato tem o valor de 7863).

O operador * significa apontado por, ou seja, o endereço de Shinji (&Shinji) aponta para o telefone 7863.

Caso Misato quisesse passar a utilizar o número de Asuka, faríamos o seguinte:
  • Misato = &Asuka;
Em resumo ficaria:
  • Misato = Rua Alemanha (valor de Misato);
  • &Misato = Rua do Amor (endereço de Misato);
  • *Misato = 1234 (o que Misato aponta)


Referências:
  • Linguagem C - Luís Damas, editora LTC - 10ª Edição




Nenhum comentário:

Postar um comentário

GNMH - CRÉDITOS ❤