Com esse artigo pretendo desvendar alguns dos segredos de ponteiros na linguagem C, estes tão temidos pelos iniciantes da linguagem. Sem mais, Hey! Ho! Let´s GO!
Bom, antes de mais nada: afinal de contas, O QUE É UM PONTEIRO?
Um ponteiro é um tipo de dados específico com
tratamento diferenciado pelo compilador. Devemos entender que
o ponteiro é um tipo de dado como inteiro, float, double e
caractere. A grande diferença entre uma variável e um ponteiro,
é que ele sempre conterá um endereço de memória. É através
desse endereço de memória que teremos acesso a informação
desejada.
Existem dois grandes problemas quando falamos de ponteiros:
distinguir quando estamos trabalhando com seu valor, ou seja,
o endereço apontado e quando estamos trabalhando com a
informação apontada por ele. Para os iniciantes o maior
problema é entender e aceitar que, em linguagem C, estamos
trabalhando diretamente com a memória.
Por tratar-se de um endereço, devemos especificar que tipo de
variável será encontrado no endereço de memória apontada pelo
ponteiro. Sendo assim, podemos criar um ponteiro para inteiro,
caractere, estrutura ou até mesmo para um arquivo.
Observações adicionais: caro colega, talvez você não saiba, mas
quando você usava arrays (vetores e matrizes), você estava
trabalhando diretamente com ponteiros. Mas esse assunto será
tratado num artigo posterior.
[2] Comentário enviado por franklinbr em 30/03/2005 - 10:21h
Arthur !!!
Ae cara, acho que sua explicacoes sobre ponteiros ficou um tanto vago, e não vejo nada de diferente que geralmente as apostilas tradicionais encontradas pela net trazem. Você apenas descreveu o que eh um ponteiro (de uma forma superficial do ponto de vista didatico). Podia dizer sobre onde realmente aplicamos um ponteiro e em que condições ele possa facilitar ou simplificar nosso codigo, e fazendo referencias a parametros externos (mais conhecidos como argc e argv). E isso ae.... desculpe se parece chato .....
[4] Comentário enviado por removido em 30/03/2005 - 13:33h
concordo com você amigos, tenho conciencia que existem artigos melhorem e que faltaram assuntos a serem abordados. mas o objetivo do artigo não era se aprofundar no estudo de ponteiros, e sim tirar dúvidas BÁSICAS, de forma simples e superficial, sobre ponteiros.Desculpe se não atendi as suas espectativas, no próximo artigo especificarei melhor o tema que irei abordar. Se vocês quiserem se aprofundar no estudo de ponteiros recomendo a leitura de um livro muito bom chamado "The C Programming Language" de Ritchie & Kernighan, o capitulo 5 deste livro aborda muito bem este assunto.
[5] Comentário enviado por jllucca em 30/03/2005 - 21:50h
Arthur,
Seu artigo está muito básico. Fora isso achei que faltou um pouco de esforço por sua parte, mas já da pra sentir que tem potencial. Infelizmente, achei duas afirmações que ficam no minimo ambiguas no entendimento...
"Existem dois grandes problemas quando falamos de ponteiros: distinguir quando estamos trabalhando com seu valor, ou seja, o endereço apontado e quando estamos trabalhando com a informação apontada por ele."
Nesse paragrafo acima, temos um probleminha de ambiguidade comum, pois o valor do ponteiro é o endereço da variavel. Mas, uma mente aprendendo pode ligar valor com o valor de onde o ponteiro aponta(variavel apontada?). Mesmo nesse caso querendo dizer o endereço contido no ponteiro.
"Para usar um ponteiro, devemos sempre inicializá-lo, NUNCA NA DECLARAÇÃO, ou seja, colocar um endereço válido para depois fazer acesso ao valor alocado no endereço de memória apontado."
Aqui, o problema está justamente onde voce chamou atenção... Porque não podemos iniciar um ponteiro na declaração? Iniciar um ponteiro é alocar a memoria pra onde ele vai apontar então porque não unir o útil(declarar o ponteiro) ao agradavel(alocar a memoria usada pelo ponteiro)?
Ainda não entrando em "malloc's" da vida porque não fazer:
{
int b = 10;
int *a = &b; // porque nunca iniciar o ponteiro na declaração?
(...)
}
Bom, o que espero com essas perguntas é tentar chamar atenção para reflexão. Não sou o dono da verdade e sempre gosto de debater sobre o que me parecem "errinhos", numa tentativa de estimular o pessoal.
[6] Comentário enviado por removido em 30/03/2005 - 23:41h
Primeiramente gostaria de pedir desculpas se fui um pouco agressivo em minha resposta.
Gostei muito de sua crítica Ricardo, com certeza tomarei mais cuidado ao escrever um novo artigo, e tentarei ter mais vontate em tornar o material escrito mais didático. ;)
Quando mencionei em "Para usar um ponteiro, devemos sempre inicializá-lo, NUNCA NA DECLARAÇÃO," tentei transmitir o que considero como uma boa prática de programação, entendo que não fui claro na explicação. Tenho a visão de que falhei em alguns pontos, e agradeço as críticas construtivas, pois a partir delas terei nova motivação em escrever artigos com melhor qualidade.
[7] Comentário enviado por fredwind em 30/09/2005 - 14:55h
E aew brother!!! ta massa tua explikção kra, pra quem ta aprendendo so vai mermu c for de vagarinho!!!! se tivesse aprofundado um pouquinho mais tria fikdo melhor!! mais ta joia assim!!!
[10] Comentário enviado por TRBaldim em 21/03/2010 - 16:40h
Me desculpe mas realmente este artigo sobre ponteiros está muito, muito vago meeeeesmo... Lendo a primeira página simplesmente me imaginei na época quando estava começando a programar em C e não entendia o que era ponteiro. Se eu pegasse esse artigo para tentar entender... Eu iria me confundir ainda mais...
[12] Comentário enviado por Nitro em 04/04/2010 - 00:37h
Só lembrando que fazendo parte de uma comunidade livre e que nesse caso não recebemos NADA pelos artigos temos que ter cuidado ao criticar um artigo. Afinal o "removido" não recebeu nenhuma graninha pelos artigos. Portando elogios ao inves de criticas serviriam muito como incentivo e motivação para que o "removido" continue a publicar artigos que possam ajudar. Embora esse tenha sido curto e pouco explorado como alguns aqui disseram, deu para ter uma noção do que é um ponteiro.
De forma que eu gostaria de agradecer o "removido" pelo artigo e que os comentários acima não te desestimule a contribuir com outros artigos.
Lembre-se:
Amadores contruiram a Arca de Noé e Profissionais o Titanic
[13] Comentário enviado por mfs em 12/04/2010 - 00:50h
O grande problema é que ponteiro sempre foi e ainda é uma das maiores dificuldades para quem ta aprendendo C. E os exemplos mais básicos de ponteiros que são os que normalmente encontramos são facilmente resolvidos de outras formas, sem ponteiros. Mas como nada se aprende começando do difícil, o artigo é muito bom para quem ta tendo seu primeiro contato com ponteiros. Como o próprio título sugere é uma introdução a ponteiros.