Introdução a ponteiros na linguagem C
Thiago Cabral Borges
30/06/2008
Resumo
Este tutorial demonstra, de maneira fácil e rápida, como usar ponteiros na linguagem de programação C. Os tópicos aqui abordados são conceitos básicos que ajudam a compreender como funciona um ponteiro.
Palavras-chave: Ponteiros; Memória; Variável.
Introdução
Ponteiros é uma característica poderosa oferecida pela pelo C. A linguagem de programação C depende muito dos ponteiros, assim, um bom programador em C precisa dominar bem ponteiros.
Ponteiro é visto pela maior parte dos programadores iniciantes como uma das partes mais difíceis na linguagem C, pois o conceito de ponteiros pode ser novo ou um mesmo símbolo usado para certa finalidade e usado para outra diferente, tornando mais difícil o entendimento.
Entendendo o que é um ponteiro
Um ponteiro é uma variável que guarda um endereço de memória de outra variável. Os ponteiros da linguagem C proporcionam uma forma fácil de acesso ao valor de variáveis sem referenciá-las diretamente. Um ponteiro possui tipo, por exemplo, inteiros, ponto flutuante e caracteres. O tipo do ponteiro indica que tipo é a variável para qual ele aponta.
Um ponteiro é declarado a seguinte forma:
tipo_do_ponteiro *nome_do_ponteiro
Exemplo:
int *p, *a;
char *pt, *ponteiro;
No exemplo acima foram criados quatro ponteiros, dois de tipo inteiro e dois de tipo caractere. É importante não confundir o asterisco (*), que indica que a variável é um ponteiro, com o mesmo sinal indicando uma multiplicação.
Conhecendo os operadores
Sempre é importante iniciar o ponteiro. Um ponteiro sempre é iniciado com o local na memória onde se localiza o valor da variável. Para iniciar a variável desejada como o endereço de memória, segue o exemplo:
int variavel_apontada=2;
int *ponteiro;
ponteiro=&variavel_apontada;
No exemplo foi criada uma variável e iniciada com valor 2, foi criado também um ponteiro que logo abaixo foi iniciado com o endereço da variável chamada variável_apontada.
A linguagem de programação C oferece dois operadores unitários, o operador de endereço (&) e o operador indireto (*). O operador de endereço retorna o endereço de memória onde fica localizado a variável, como foi mostrado no exemplo acima. O operador indireto retorna o valor da variável para qual o ponteiro aponta. Por exemplo:
main() {
int var, *p;
var=10;
p=&var;
printf("O valor da variavel e': %d \n", *p);
printf("O endereco de memoria da variavel e': %p \n", p);
printf("O endereco de memoria do ponteiro e': %p \n", &p);
*p=15;
printf("O novo valor da variavel e': %d \n", var);
return (0);
}
A saída será:
O valor da variavel e': 10
O endereco de memoria da variavel e': 00AE4F6
O endereco de memoria do ponteiro e': 00AE4F8
O novo valor da variavel e': 15
No exemplo, usam-se os operadores para imprimir e aterá o valor da variável. Onde o endereço de memória varia de cada computador.
Conclusão
O ponteiro é usado em situações em que a passagem de valores é complicada, por isso é muito importante seu aprendizado. O conceito de ponteiro e seu uso podem, aparentemente, ser complicado, porém, não é muito difícil. O uso indevido e insensato de ponteiros pode causar sérios bugs em um programa e até comprometer todo o sistema, assim, é necessário cuidado quando se usa eles.
Nenhum comentário foi encontrado.