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.