Definição
O C possui uma relação muita próxima com o uso de ponteiros.
Diferente de outras linguagem que procuram ocultar ou abstrair os ponteiros, o C utiliza frequentemente, tanto é verdade que o comando
scanf utiliza os conceitos de ponteiros.
Mas o que são ponteiros?
Para isso precisamos entender como os dados e programas são armazenados no computador. Todos os dados e programas são armazenados na Memória RAM, em espaço de 1 Byte, o que equivale a 8 bits, e cada espaço desses possui um endereço (representado em verde na figura):
Ao se criar variáveis em C, estamos alocando-as num espaço da memória RAM, que será endereçado com um número conforme disponibilidade.
Por exemplo, veja o programa a seguir:
Ao se executar o programa, são criadas 2 variáveis e apresentado o valor, o tamanho e o endereço de cada variável.
Como o endereço de memória pode mudar para cada execução, vamos supor que o valores foram armazenado no espaço de memória a seguir:
Podemos perceber que os valores ocuparam o tamanho de 2 Bytes, com os endereço 0x101 e 0x103
Não é regra que o C irá alocar espaços contínuos para as variáveis, ele poderá alocar as variáveis em locais diferentes na memória, como no exemplo abaixo:
Declarando e Utilizando Ponteiros
A forma de declarar um ponto segue o modelo:
O * (asterisco) indica que a variável será utilizada para guardar um endereço e não um valor.
O tipo_do_ponteiro está ligado com o tipo de variável em que será apontado, devendo serem do mesmo tipo.