Ponteiro é um recurso da linguagem C que consiste em:
- Apontar ou acessar endereços de memória.
- Acessar variáveis que não são acessíveis em uma função.
- Retornar um ou mais valores em uma função.
- Entre outros…
Como declarar um ponteiro:
Tipo *Variável;
Exemplo:
#include void main() { int *p, q; q = 1; p = &q; printf("P: %d", &q); }
No exemplo acima um ponteiro ‘p’ e uma variável ‘q’ são declarados, ‘q’ recebe 1 e ‘p’ recebe o endereço de memória da variável ‘q’, vale lembrar que o & (‘e’ comercial) mostra o endereço de memória, como ‘p’ é um ponteiro então ele apontará para o valor que está armazenado naquele endereço de memória. Imagine gavetas enumeradas de um guarda-roupa, podemos imaginar essa numeração como endereços de memória e o que o ponteiro faz é apontar para numeração dessa gaveta, mostrando o seu conteudo:
Usando ponteiros em funções:
#include void func(int *p); void main() { int x; x = 1; printf("Valor de X antes da funcao: %d", x); //Chamando função. func(&x); //Exibe valor de x depois de executar a função. printf("\nValor de X depois da funcao: %d", x); } void func(int *p) { //Ponteiro *P apontando para o endereço de memória da variável X na função main() ou principal. printf("\nPonteiro P: %d", *p); //Altera valor da variável X. *p = 2; }
O programa acima terá a seguinte saída:
Valor de X antes da funcao: 1
Ponteiro P: 1
Valor de X depois da funcao: 2
A variável ‘x’ é declarada com o valor igual à 1, o endereço de memória da variável ‘x’ é passado ao ponteiro ‘p’ através dos parâmetros da função ‘func’, então ‘p’ aponta para o endereço de ‘x’ e atribui o valor 2.
Muito bom!!