</AULA 07>
Ponteiros e Endereçamento de Memória
Ponteiros são variáveis especiais que não armazenam um valor comum (como 10 ou 'A'), mas sim o Endereço de Memória de outra variável.
Atenção: A sintaxe de Portugol que estamos utilizando não possui estrutura para manipulação de ponteiros.
Python foca em segurança total. O programador não manipula endereços reais para evitar erros como "falha de segmentação". A linguagem gerencia tudo via Garbage Collector.
O endereço de memória aponta para onde o espaço físico de uma variável começa na RAM.
| Unidade | Conversão |
|---|---|
| 1 Bit | 0 ou 1 |
| 1 Byte | 8 Bits |
| 1 KB / MB / GB | Base 1024 |
| 1 TB | 1024 GB |
| Tipo Primitivo (C) | Tamanho |
|---|---|
| char | 1 Byte (8 bits) |
| int / float | 4 Bytes (32 bits) |
| double | 8 Bytes (64 bits) |
| Ponteiro | 4 ou 8 Bytes |
Como um int ocupa 4 Bytes, os endereços não pulam de 1 em 1.
Se a Var A começa em 1000, a próxima (Var B) só começa em 1004.
Regra: O endereço de uma variável é o local do primeiro byte que ela ocupa.
Retorna o local da variável.
"Onde a variável mora?"
Pense no * como a mira de um alvo:
Ele não olha para o ponteiro em si, mas foca e "atira" diretamente no conteúdo que está guardado lá no endereço de outra variável.
&X). Ao usar a "mira" (*p), o C acessa o valor 25.
Note que ao alterar *p, modificamos o valor físico no endereço compartilhado com x.