Ponteiro em Linguagem C

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

Postagens recentes Postagens antigas Inicio
Geo Visitors Map