ponteiros C

712 palavras 3 páginas
Dia C - Ponteiros e Aritmética de Ponteiros.
Jonas Abreu em 23/03/2007
Enfim chegamos ao assunto que causa dor de cabeça à maioria dos programadores iniciantes (e à muitos veteranos também). É complicado trabalhar com a referência ao invés de trabalhar com o objeto.
Basicamente, um ponteiro é a posição de memória onde está a estrutura. Se pensarmos na memória como um vetor, o ponteiro é um índice desse vetor. Em C, um ponteiro simplesmente indica uma posição de memória e nada mais. Todo o resto da informação (como, por exemplo, que tipo de estrutura é apontada) existe apenas em tempo de compilação. Em tempo de execução memória é simplesmente memória e nada mais. Isso permite um maior controle sobre ela. É possível com um simples cast mudar totalmente a forma como ela é tratada. Por exemplo, é possível transformar um vetor de inteiros em um vetor de char. Internamente a única coisa que mudou é quantos bytes tem a estrutura do vetor. Isso também vale para casts de ponteiro de estruturas.
Tá, mas o que eu faço com todas essas mudanças? Simples. Sabendo de tudo isso é possível agora aproveitar-se disso. Por exemplo, você pode fazer uma alocação de centenas de bytes e utilizá-la como vários objetos diferentes em sequência, dessa forma criando um semi-alocador de memória muito mais rápido do que o malloc (o custo do malloc ficará dividido entre os vários objetos). Mas para isso é necessário entender um pouco de aritmética de ponteiros.
Quando você soma 1 a um inteiro, ele simplesmente incrementa o inteiro. Se ele valia 2 passa a valer 3. Com ponteiros é um pouco diferente. Cada vez que você incrementa um ponteiro a seguinte conta é feita (sendo aux o ponteiro e código aux++): aux += sizeof(*aux)
Ou seja, quando você incrementa o ponteiro ele na verdade é incrementado com o samanho do objeto para o qual ele aponta, em bytes. Vale lembrar que é o mesmo cálculo realizado para acessar a posição de um vetor (esse cálculo é invisível pois você usa [ e ]). Se você

Relacionados

  • Ponteiros c:
    616 palavras | 3 páginas
  • ponteiros em C
    620 palavras | 3 páginas
  • Ponteiros em C
    810 palavras | 4 páginas
  • Ponteiros em C
    1657 palavras | 7 páginas
  • PONTEIROS EM C
    1343 palavras | 6 páginas
  • C-ponteiros
    1430 palavras | 6 páginas
  • Ponteiros em C
    508 palavras | 3 páginas
  • Ponteiros em C
    1234 palavras | 5 páginas
  • C++ Ponteiro
    655 palavras | 3 páginas
  • Ponteiros na linguagem c
    1353 palavras | 6 páginas