Ir para conteúdo
Fórum Script Brasil
  • 0

Ponteiros? Qual A Sua Utilidade ?


Inufelipe

Pergunta

Ola galera do script brasil forum.

Eu gostaria de saber para que servem ponteiros em C?

Eu sei que é para apontar para uma outra variavel ou local na memoria...

mais eu queria uma utilidade fora do "FILE *f" e em uma função para alterar um dado

que não é global e nem da função.

falou.

Link para o comentário
Compartilhar em outros sites

9 respostass a esta questão

Posts Recomendados

  • 0

Muito boa a sua pergunta. Na minha opiniao a verdadeira magica da programacao esta na manipulacao de ponteiros. Primeiramente, um ponteiro nada mais é, como voce mesmo disse, que um endereco de memoria. Mas isso é um recurso muito maior do que parece. Um vetor é um ponteiro. A variavel que voce declara como vetor nada mais é que um ponteiro para o primeiro elemento do seu vetor. Alocacao dinamica da memoria so é possivel porque voce pode armazenar o endereco dela em um ponteiro. Quando voce da um malloc, por exemplo, voce nem imagina onde a memoria esta, mas voce pode acessa-la usando um ponteiro. Quando voce constroi estruturas de dados mais complexas (como listas ligadas, arvores, heaps, etc) voce precisa o tempo todo lidar com ponteiros pois estas estruturas são alocadas em qualquer area da memoria. Mas da pra usar exemplos mais simples. Quando voce quer fazer uma funcao que troque de lugar o valor de duas variaveis, o que voce faz? Voce faz a funcao receber dois ponteiros para que a alteracao feita dentro da funcao se reflita fora tambem. Alias, na maior parte das vezes que voce precisa que uma funcao tenha efeitos sobre algo que esta fora dela voce vai precisar passar um ponteiro. Praticamente, assim que comecamos a desenvolver sistemas mais complexos (em que é preciso utilizar tecnicas de engenharia de software) mais e mais problemas que surgem são resolvidos com ponteiros. Tem mais algumas milhoes de coisas que daria pra citar, mas acho que já deu pra entender.

Ah, e FILE voce declara como um ponteiro (FILE *) porque a estrutura FILE precisa ser alterada dentro das funcoes que a manipulam. Voce encontra coisas assim em praticamente todas as libs. Quando voce resolve escrever algoritmos genericos então, praticamente voce so usa ponteiros. Isso sem contar toda a parte de simulacao de recursos que o C não tem, como serializadores.

Link para o comentário
Compartilhar em outros sites

  • 0

Serializadores são funcoes que recebem um objeto (em C seriam as structs) e gravam ele em um arquivo. Java vem com uma interface Serializer que torna possivel a serializacao. C++ eu não sei se tem suporte. Pra C, eu nunca vi, mas estou trabalhando em uma solucao e assim que tiver terminado eu abro o fonte dela.

Link para o comentário
Compartilhar em outros sites

  • 0

Ah sim! Existe isso em .Net! Lembrei agora, pois, nunca pensei que fosse "a mesma serialização" que falamos em .Net (pensei que esse termo se referia a "outros 500")

Obrigado!

Link para o comentário
Compartilhar em outros sites

  • 0

Alocação dinâmica!

Você pode alocar espaço o quanto quiser e depois descartar para poder alocar outra coisa evitando desperdício. Ou seja, no primeiro caso você liberou memória durante seu programa. Já no segundo a variável só vai deixar de existir se a função/programa acabar!

Link para o comentário
Compartilhar em outros sites

  • 0

Nesse caso pequeno não tem muita vantagem mesmo. Mas quando voce usa grandes quantidades de memoria, se ela não for alocada dinamicamente, pode comprometer a pilha que a linguagem usa para chamada de funcoes, etc. (declaracoes estaticas são mantidas nessa pilha). Tenho um tutorial explicando a pilha do C em http://vidageek.net/2007/03/02/dia-c-pilha-do-c/ .

Link para o comentário
Compartilhar em outros sites

  • 0

não, porque o operador new faz alocacao dinamica de memoria. Cada objeto em C++ possui seu proprio alocador de memoria. é realmente util e eficiente.

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,4k
×
×
  • Criar Novo...