TÉCNICAS DE PROGRAMAÇÃO Prof. Welber Ribeiro da Silva PONTEIROS ● Um ponteiro é uma variável capaz de armazenar um endereço de memória ou o endereço de outra variável. Int a, b, c; //váriaveis do tipo inteiro int *ptr; // declara um ponteiro para um inteiro ● ● Para declarar mais de um ponteiro por linha, usa-se um operador indireto (*) para cada char *ch1, *ch2; //são ponteiros para o tipo char char *ch1, *ch2, ch3; //ch3 não é um ponteiro PONTEIROS ● Inicialização de um ponteiro: int var; int *ptr; var = 10; ptr = &var; ● O operador & retorna uma posição de memória PASSAGEM DE PARAMETROS POR REFERÊNCIA ● ● Para acessar o conteúdo de uma posição de memória, cujo endereço está armazenado em um ponteiro, usa-se o operador de derreferência (*). O operador * retorna o valor da variável apontada PONTEIROS ● Impressão de ponteiros: pode-se imprimir o valor armazenado no ponteiro (um endereço), usando-se a função printf com o formatador %p na string de formato. PONTEIROS ● Exemplo 1: PASSAGEM DE PARÂMETROS POR VALOR ● ● ● ● Quando passamos argumentos a uma função, os valores fornecidos são copiados para as variáveis parâmetros da função. Este processo é idêntico a uma atribuição. Este processo é chamado de passagem por valor. Desta forma, alterações nos parâmetros dentro da função nâo alteram os valores que foram passados. Exemplo: PASSAGEM DE PARÂMETROS POR REFERÊNCIA ● ● Se precisamos que as alterações nos parâmetros da função permaneção após a execução da função devemos fazer a passagem de parametros por referência. Para isso utilizamos ponteiros: EXERCICIOS ● 1) Com base no estudo de Ponteiros, qual das opções a baixo é correto afirmar? a) Ponteiro é uma variável que armazena endereço. b) Ponteiro é o valor de uma variável. c) Ponteiro é o indicador da próxima variável a ser passada. d) Ponteiro é o endereço que aponta para uma variável. EXERCICIOS 2) Quais das seguintes instruções declaram um ponteiro para uma variável float? a) float p b) float *p c) *float p d) float* p EXERCICIOS ● 3) O seguinte programa está correto? Justifique. #include <stdio.h> const int VAL=123; int main() int *p = VAL; printf(“%d \n”, *p); return 0; } EXERCICIOS ● 4) O seguinte programa está correto? Justifique. #include <stdio.h> const int VAL=123; int main() int *p = VAL; printf(“%d \n”, *p); return 0; } EXERCICIOS ● ● 5) Escreva uma função que troque os valores de duas váriaveis iteiras. A passagem de parametros deve ser feita por referência. 6) Faça uma função que receba um valor inteiro como referência e retorne o resto da divisão deste número por 10. Altere também o valor da variável passada por referência, dividindo-a por 10.