Veja o exemplo int count10 int pt ptcount criamos um

Info icon This preview shows pages 8–10. Sign up to view the full content.

Veja o exemplo: int count=10; int *pt; pt=&count; Criamos um inteiro count com o valor 10 e um apontador para um inteiro pt . A expressão &count nos dá o endereço de count, o qual armazenamos em pt . Simples, não é? Repare que não alteramos o valor de count , que continua valendo 10. Como nós colocamos um endereço em pt , ele está agora "liberado" para ser usado. Podemos, por exemplo, alterar o valor de count usando pt . Para tanto vamos usar o operador "inverso" do operador & . É o operador * . No exemplo acima, uma vez que fizemos pt=&count a expressão *pt é equivalente ao próprio count . Isto significa que, se quisermos mudar o valor de count para 12, basta fazer *pt=12 . Vamos fazer uma pausa e voltar à nossa analogia para ver o que está acontecendo. Digamos que exista uma firma. Ela é como uma variável que já foi declarada. Você tem um papel em branco onde vai anotar o endereço da firma. O papel é um ponteiro do tipo firma. Você então liga para a firma e pede o seu endereço, o qual você vai anotar no papel. Isto é equivalente, no C, a associar o papel à firma com o operador & . Ou seja, o operador & aplicado à firma é equivalente a você ligar para a mesma e pedir o endereço. Uma vez de posse do endereço no papel você poderia, por exemplo, fazer uma visita à firma. No C você faz uma visita à firma aplicando o operador * ao papel. Uma vez dentro da firma você pode copiar seu conteúdo ou modificá-lo. Uma observação importante: apesar do símbolo ser o mesmo, o operador * (multiplicação) não é o mesmo operador que o * (referência de ponteiros). Para começar o primeiro é binário, e o segundo é unário pré-fixado. Aqui vão dois exemplos de usos simples de ponteiros: #include <stdio.h> int main () { int num,valor; int *p; num=55; p=&num; /* Pega o endereco de num */ valor=*p; /* Valor e igualado a num de uma maneira indireta */ printf ("\n\n%d\n",valor); printf ("Endereco para onde o ponteiro aponta: %p\n",p); printf ("Valor da variavel apontada: %d\n",*p); return(0); } #include <stdio.h> int main () { int num,*p; num=55; p=&num; /* Pega o endereco de num */ printf ("\nValor inicial: %d\n",num); *p=100; /* Muda o valor de num de uma maneira indireta */ printf ("\nValor final: %d\n",num); return(0); } __________________________________________________________________________________ _ CURSO DE C DO CPDEE DA UFMG 42
Image of page 8

Info icon This preview has intentionally blurred sections. Sign up to view the full version.

Nos exemplos acima vemos um primeiro exemplo do funcionamento dos ponteiros. No primeiro exemplo, o código %p usado na função printf() indica à função que ela deve imprimir um endereço. Podemos fazer algumas operações aritméticas com ponteiros. A primeira, e mais simples, é igualar dois ponteiros. Se temos dois ponteiros p1 e p2 podemos igualá-los fazendo p1=p2 . Repare que estamos fazendo com que p1 aponte para o mesmo lugar que p2 . Se quisermos que a variável apontada por p1 tenha o mesmo conteúdo da variável apontada por p2 devemos fazer *p1=*p2 . Basicamente, depois que se aprende a usar os dois operadores ( & e * ) fica fácil entender operações com ponteiros.
Image of page 9
Image of page 10
This is the end of the preview. Sign up to access the rest of the document.
  • Summer '00
  • Aula4-IntroducaoC
  • int main, vetores, ponteiros, DO CPDEE DA UFMG

{[ snackBarMessage ]}

What students are saying

  • Left Quote Icon

    As a current student on this bumpy collegiate pathway, I stumbled upon Course Hero, where I can find study resources for nearly all my courses, get online help from tutors 24/7, and even share my old projects, papers, and lecture notes with other students.

    Student Picture

    Kiran Temple University Fox School of Business ‘17, Course Hero Intern

  • Left Quote Icon

    I cannot even describe how much Course Hero helped me this summer. It’s truly become something I can always rely on and help me. In the end, I was not only able to survive summer classes, but I was able to thrive thanks to Course Hero.

    Student Picture

    Dana University of Pennsylvania ‘17, Course Hero Intern

  • Left Quote Icon

    The ability to access any university’s resources through Course Hero proved invaluable in my case. I was behind on Tulane coursework and actually used UCLA’s materials to help me move forward and get everything together on time.

    Student Picture

    Jill Tulane University ‘16, Course Hero Intern