Baixe o app para aproveitar ainda mais
Prévia do material em texto
Ponteiros ¨C Oque são ? Ponteiros são a maneira como a linguagem C guarda a REFERENCIA para algum elemento. A princípio, pode parecer dificil, mas na real, é bem simples. Para que Servem ? Imagine que você tenha um número inteiro, e tenha declarado ele no seu programa como : int meuNumeroInteiro = 17; Você já parou para pensar que, este número, está na MEMÓRIA do seu computador ? Logo,tem que existir uma maneira de “chegar” nele.��Cada variável que você declara no seu programa tem o seu próprio “endereço de memória”. Guarde isso e repita como um mantra :) Endereço de Memória.� Um endereço de memória, tem uma “cara” meio feia, geralmente é algo do tipo 0x91828371 (mas não se assuste). Abstraia do que significa esse 0x na frente e etc, porque você não vai precisar disso. Então um ponteiro, serve para você acessar alguma variável em memória. Como declarar e usar ? O simbolo de um ponteiro é o asterísco * . Ele indica que você declarou um ponteiro. Para criar um ponteiro para inteiro, basta escrever int* meuPonteiro; Fazendo isso você acabou de dizer o seguinte : “Ei, Eu criei uma variável chamada meuPonteiro, que vai GUARDAR O ENDEREÇO DE UM NUMERO INTEIRO”. Preste atenção : UM PONTEIRO NÃO GUARDA VALORES, ELE GUARDA ENDEREÇOS. OS ENDEREÇOS, ESTES SIM, TEM ALGUM VALOR DENTRO. EX : Declarar um inteiro com valor qualquer, e salvar um ponteiro para ele. int inteiroA = 10; int* meuPonteiro = &inteiroA; Repare Que o & simboliza que você está atribuindo a variável meuPonteiro, o ENDEREÇO da variável inteiroA; Lembre-se : Um ponteiro guarda o ENDEREÇO, nunca um valor. Ponteiros Não guardam valor, os endereços sim. Apesar dos ponteiros não guardarem valores, os endereços para os quais ELES APONTAM, guardam. Se você fizer : int inteiroA = 10; int* meuPonteiro = &inteiroA;��e mandar imprimir o valor de meuPonteiro (usando printf), o resultado será algo do tipo 0x17260291, que é o ENDEREÇO do inteiroA. Para imprimir o CONTEUDO do ENDEREÇO DE MEMORIA APONTADO pelo ponteiro, use *(meuPonteiro). Exemplo : int a=10; int* b=&a; printf("\n%d",a); printf("\n%d",&a); printf("\n%d",b); printf("\n%d",*b); Saída : 10 35820182 35820182 10 Motivo ? Primeiro imprimimos o valor de A, que é 10. Depois, o endereço dele, que é esse numero feio. Depois, o valor de b (que é um ponteiro para a), logo o valor do ponteiro, é o endereço da variável ª São iguais. O ponteiro b, aponta para área de memória onde está o “a”. Por isso os numeros são iguais. E por ultimo imprimimos o valor do CONTEUDO DA AREA DE MEMORIA APONTADA POR B, que é 10. Se B aponta para A, e o Conteudo de A = 10, temos que o conteudo da area de memoria apontada por B = 10; Pode parecer confuso, mas leia várias vezes até pegar.
Compartilhar