Diversidade
(Ponteiros/Passagem por Referência)
Relembrando Ponteiros:
Declaração: * onde: – define o tipo da variável para a qual o ponteiro irá apontar – define o nome do ponteiro através do qual ele será referenciado
Operadores:
* (o conteúdo no endereço apontado por)
Ex: *P Retorna o conteúdo da variável no endereço apontado por P
& (o endereço de)
Ex: &A Retorna o endereço da variável A
Agora vamos praticar...
1) Teste o programa abaixo utilizando o depurador e verifique o valor final de j? int i=99, j; int *p; p = &i; j = *p + 100;
Dica:
Solicite a visualização dos seguintes marcadores: i, j, p (o conteúdo das variáveis i, j e p)
&i, &j, &p (endereço das variáveis i, j, e p)
*p (conteúdo no endereço apontado por)
Observe que, após a execução da 3ª instrução, o conteúdo de p será igual ao endereço de i
Observe que, após a execução da 4ª instrução, o conteúdo de j será igual ao conteúdo apontado por p (ou seja, o valor de i) mais 100
2) Teste o programa abaixo utilizando o depurador e verifique o valor final de c? int a=5, b=12, c; int *p, *q; p = &a; q = &b; c = *p + *q;
Dica:
Solicite a visualização dos seguintes marcadores: a,b, c, p, q (conteúdo das variáveis a, b, c, p, e q)
&a, &b (endereço das variáveis a, b)
*p, *q (conteúdo no endereço apontado por p e por q)
Observe que, após a execução da 3ª instrução, o conteúdo de p será igual ao endereço de a
Observe que, após a execução da 4ª instrução, o conteúdo de q será igual ao endereço de b
Observe que, após a execução da 5ª instrução, o conteúdo de c será igual ao conteúdo apontado por p (ou seja, o valor de a) mais o conteúdo apontado por q (ou seja, o valor de b)
3) Teste o programa abaixo utilizando o depurador e verifique o valor final de c? int i=7, j=3, c; int *r; r = &i; c = *r + j;
Dica:
Solicite a visualização dos seguintes marcadores: i,j, c, r (conteúdo das variáveis i, j, c e r)
&i (endereço da variável i)