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;