Passagem por valor e emails com anexo

Data: 2010-01-18
Categorias: Programação

Mais uma analogia vencedora para ponteiros, chamadas por valor e chamadas por referência: e-mails.

Quando passamos um parâmetro por valor, estamos enviando um e-mail com um arquivo em anexo. Não importa o que o destinatário faça com o arquivo: nós não vamos saber o que foi mudado se ele não enviar uma outra cópia.

email-para-funcao.png

Por outro lado, ao passar um parâmetro por referência, estamos enviando um e-mail com um endereço de onde está o arquivo. Se o usuário alterar o arquivo diretamente do endereço que enviamos será possível ver essa alteração imediatamente, pois ambos estão olhando para o mesmo valor na memória.

email-para-funcao2.png

A analogia pode ser levada mais longe, com ponteiros de ponteiros: enviamos um e-mail com o endereço de um arquivo; dentro desse arquivo existe um endereço para outro arquivo. Dessa forma é possível tanto alterar o arquivo final quanto o endereço de onde ele está; ou ainda "apontar" para outro arquivo, trocando o endereço de dentro do primeiro arquivo.

email-para-funcao3.png

Assim é fácil de visualizar que os dados estão sempre em um arquivo que ocupa espaço na memória (do disco ou da RAM), mas endereços também podem ocupar espaço, se estiverem salvos em um arquivo.

novo-arquivo.png

Dessa forma, um e-mail que contenha um arquivo em anexo vai ser muito maior que um e-mail apenas com o endereço do arquivo, mas é porque todo o conteúdo do arquivo está dentro do e-mail no primeiro caso. No segundo caso, o endereço ocupa apenas alguns caracteres que identificam a localização do arquivo.

6 respostas para “Passagem por valor e emails com anexo”

  1. Fred Alencar Diz:

    Caloni, você considera PONTEIROS como um tipo de dado?

  2. Wanderley Caloni Diz:

    Olá, Fred.

    É óbvio que sim. Se considerarmos tipos como moldes para a memória, um ponteiro seria o molde para endereço de memória. Na verdade, em linguagens como C/C++ isso vai além, já que é possível especificar para qual tipo de objeto o ponteiro aponta: ponteiro para inteiro, para classe abstrata, etc.

    []s

  3. Fabio Diz:

    Achei essa analogia brilhante, eu ando apanhando para aprender C++ e só pra memorizar o funcionamento dos ponteiros demorei mais de um mês. Agora com esse esquema de e-mail ficou fácil lembrar ( principalmente quando te perguntam pra que serve um ponteiro e dá aquele branco...)

  4. Rafael Diz:

    Bacana a analogia!

  5. Renan Diz:

    Seu anti-spam é chato, quanto é 8 + 6 ?

    Mas sobre seu artigo.. vc é completamento louco Wandeco, mas se funciona para vc, ótimo!

    Abraços

  6. Patrick Bassut Diz:

    Muito interessante a analogia, e até engraçada.

    Parabéns

Deixe uma resposta