Ponteiro
Ponteiros são ferramentas oferecidas pela linguagem C considerada por alguns programadores difíceis nessa linguagem. Existem dois motivos principais par isso. O primeiro e que os conceitos embutidos em ponteiros, não são comuns em linguagem de alto nível, o segundo, são os símbolos usados para anotação de ponteiros em C não são tão claros quando poderiam ser, exemplo: seus símbolos e usados para duas finalidades diferentes. No contesto pode ser difícil entender ponteiros, só tem que entender seu conceito.
O que é um ponteiro?
E simplesmente uma variável que armazena o endereço de outra variável.
Podemos utilizar o ponteiro de um relógio como exemplo, ele aponta para as horas, minutos e segundos, ou seja, um ponteiro aponta para algo.
O ponteiro e uma variável e como qualquer outra tem um tipo e o mesmo tipo da variável que ele aponta. Para que um variável ponteiro seja declarado e precedido por um asterisco. Para que possa ser acessado o endereço de uma variável e utilizado o operador & (e comercial), chamado e operador de referência ou de endereço (tem que ter cuidado com esses operadores unários (& /* para que não sejam confundido com operadores binários ND bit a bit e multiplicação).
Sempre devemos inicializar um ponteiro antes de usá-lo, ou seja, ao tentar acessar, ler ou gravar o valor apontado por ele, podemos estar manipulando um lugar desconhecido da memória, onde ocorrera uma falha de segmentação (que ocorre quando um programa tenta acessar a memória alheia). Nos sistemas Unix quando acontece esse tipo de erro o sinal e SIGSEGV e enviado ao programa assim informando a falha.
Ponteiros podem ser usados de variadas formas em estruturas, parâmetros de funções, vetores; mais no uso com vetores deve ser lembra que um variável vetor já e um ponteiro por si só e ponteiro para ponteiro.
Os ponteiros são usados em linguagem c em situações em que o uso do nome da variável não e permitido ou e indesejável. Algumas razoes para que usamos ponteiros são: