Da mesma maneira que existem em C variáveis do tipo char, int e float, existem variáveis do tipo ponteiro. As variáveis do tipo ponteiro armazenam endereços de memória e são utilizadas por 3 razões específicas na programação:
• permitem a modificação de argumentos de funções: permitem que uma função altere valores de variáveis não globais e não locais a ela através da referência ao endereço de memória da variável passada como parâmetro para a função;
• permitem o uso de rotinas de alocação dinâmica de memória: alocação e desalocação de memória em tempo de execução conforme a necessidade do programa;
• aumento de eficiência em determinadas rotinas.
A forma de declaração de uma variável ponteiro é:
tipo *nome_variável
onde tipo é o tipo de variável apontada pela variável ponteiro.
Por exemplo:
float *p; // p é um ponteiro de float
Ou seja, p apontará para uma região de memória que armazena um valor float.
Operadores para Ponteiros
Existem dois operadores especiais para trabalhar com ponteiros. São eles:
* - conteúdo do endereço apontado por
& - endereço de
ATENÇÃO: Quando * é usado na declaração de uma variável ponteiro ele simplesmente indica que a variável é do tipo ponteiro de um tipo. O significado de * descrito acima não serve para declaração de ponteiros!
Observe o exemplo abaixo:
1 main( ) {
2 int v1, v2, * p, * q
3 v1 = 3;
4 v2 = 12;
5 p = &v1; // p recebe o endereço de memória da variável v1
6 q = p; // copia o endereço guardado em p para q
7 *q = 44; // altera o valor armazenado no endereço apontado por q
8 }
Neste exemplo, p e q são variáveis do tipo ponteiro de inteiro. Na linha 6 é feita uma atribuição à variável q, que passa a ter o mesmo valor armazenado em p: o endereço de v1. Ao modificarmos o conteúdo apontado por q na linha 7, alteraremos o valor guardado em v1, visto que a variável q aponta para v1
0 comentários:
Postar um comentário