Ponteiros
Ponteiros
• Armazenam endereços de memória
• O endereço de memória aponta para uma variável
• Permitem realizar alocação dinâmica de memória
• Permitem que uma função altere o conteúdo efetivo de uma variável
Sintaxe
tipo *nomevar;
• Tipo: Tipo da variável que será apontada
• Nomevar: nome do ponteiro. Segue mesmo padrão de variáveis
Lembrando
• int x=0;
• int *ptrX; //cria ponteiro para inteiro
• & pega o endereço da variável que vem depois;
• &x é o endereço da variável x
• * pega o conteúdo apontado pelo ponteiro
• *ptrX é o valor armazenado no endereço de memória. Se ptrX=&x, então *ptrX==x
Exemplo
Declarando um ponteiro; int x,y; //variável x, variavel y int *ptr; // ponteiro para variável inteira ptr = &x; //ptr recebe o endereço da variavel x x=0; y=*ptr;// y recebe o conteúdo da variável
apontada pelo ponteiro; //neste caso equivale a escrever y=x;
Exemplo: Manipulação de Ponteiros
int main(){ int x,*px,*py; x=9; px=&x; py=px; printf("x= %d\n",x); printf("&x= %d\n",&x); printf("px= %d\n",px); printf("*px= %d\n",*px); printf("*py= %d\n",*py); }
Função Main Declarando int e dois ponteiros para int; x recebe o valor 9 px RECEBE o endereço da variavel x py RECEBE o endereço armazenado em px
Manipulação de Ponteiros
• Ponteiros são variáveis como quaisquer outra
• Podem ser manipuladas da mesma forma
• Um endereço de memória é um valor numérico
• Este valor numérico pode ser utilizado em operações;
Expressões com Ponteiros
• Se px aponta para uma variavel x
• *px pode ser utilizado em qualquer ponto em que x poderia ser utilizado;
• int y,x,*px; px=&x;
• x=0;
• y=*px+1; //y recebe 0+1;
• y=*(px+1) // y recebe o valor apontado
// por px +1;
• * tem precedencia sobre os operadores
Expressões com Ponteiros
• Os operadores ++ e -- tem precedencia sobre o * *px++; // incrementa o endereço antes *(px--); // mesma coisa de *px--
Passagem de Parâmetros
• Passagem por valor ▫ O valor do parâmetro é “copiado” para uma
variável dentro da função ▫ O valor original da váriável não pode ser alterado
• Passagem por referência ▫ Através do uso de um ponteiro que aponta para a variável original, é possível ler e alterar o valor original;