Como vários ponteiros compartilham um único endereço de memória em C

8

C tem uma peculiaridade que confunde os iniciantes, mas alimenta sistemas complexos. Você pode apontar dezenas de ponteiros para o mesmo endereço de memória.

Considere um número inteiro simples i. Você pode declarar três ponteiros – p, q e r – e vinculá-los todos a ele.

Isso não é mágica. É apenas cópia de endereço. Quando você escreve r = p, o compilador copia o endereço mantido por p em r. O mesmo acontece com q.

Agora i tem quatro nomes. É ‘eu’. É *p. É *q. É *r.

Não há limite rígido para isso. Você pode ter centenas de ponteiros referenciando o mesmo pedaço de RAM. Cada uma é uma variável distinta em seu código, mas todas são resolvidas exatamente no mesmo local na memória.

É por isso que as alterações feitas através de um ponteiro afetam todos os outros. Modificar *p? O valor nesse endereço também muda para q e r. É uma visão direta dos mesmos dados.

Por que isso importa? Porque permite alias. Seu programa pode analisar os mesmos dados através de lentes diferentes. Um ponteiro pode tratá-lo como uma estrutura. Outro pode tratá-lo como uma matriz de bytes brutos. Os dados não mudam. A interpretação sim.

Essa flexibilidade é poderosa. É também onde os insetos se escondem. Se você perder o controle de qual ponteiro está onde, poderá substituir dados que não pretendia. Mas, por enquanto, lembre-se: ponteiros são apenas endereços. E os endereços podem ser compartilhados.

Artigo anteriorVSDC Free Video Editor: A melhor ferramenta de edição não linear somente para Windows para 4K?
Próximo artigoPinterest: um mecanismo de bookmarking visual para sua vida digital