Ponteiros em C
Introdução
Ponteiros são um dos recursos mais poderosos da linguagem C e de outras. Qualquer programa de utilidade prática escrito em C dificilmente dispensará o uso de ponteiros. A tentativa de evitá-los implicará quase sempre códigos maiores e de execução mais lenta.
Para quem está começando, pode parecer (e algumas vezes é) um tanto difícil. Mas não há outro caminho senão enfrentar a realidade.
São muitas as aplicações de ponteiros. A seguir, relação das mais comuns.
• Acessar endereços de memória que o programa aloca em tempo de execução.
• Acessar variáveis que não são visíveis em uma função.
• Manipulação de arrays.
• Manipulação de strings.
• Passar o endereço de uma função para outra.
• Retornar mais de um valor para uma função.
Definição e declaração
Ponteiro é uma variável que contém o endereço de um objeto de dados, em geral uma outra variável. Essa é a razão para o seu nome: eleaponta para outra variável.
Conforme qualquer variável em C, o ponteiro deve ser declarado antes de ser usado. Basta inserir o operador indireto (*) após o tipo da variável
Essa declaração define a variável ptr como um ponteiro para uma variável do tipo int (número inteiro).
A declaração de ponteiro não tem o mesmo significado da declaração de uma variável. Ela indica apenas o tipo de objeto de dados apontado e, desde que contém endereço de memória, o tamanho em bytes que ocupa não tem relação com o tamanho do objeto apontado. O tamanho do ponteiro é fixo e depende apenas do modelo de memória do sistema (2 bytes ou 4 bytes, normalmente).
Para declarar mais de um ponteiro por linha, usa-se um operador indireto (*) para cada
char *ch1, *ch2; (são ponteiros para o tipo char).
Se um operador for omitido (exemplo: char *ch1, ch2;), a variável correspondente não será ponteiro e, certamente, provocará erro de execução se usada como tal.
O ponteiro pode ser declarado para qualquer tipo legal de variável em C (char, int, float, double, etc), além de