Exercícios Resolvidos de Manipulando ponteiros

Ver Teoria

Enunciado

Observe o seguinte programa:

E a seguinte definição da função f u n c :

Quais serão os valores de x e y impressos ao fim da execução desse programa dado que os valores inseridos pelo usuário como entrada desse programa serão 3 e 4 respectivamente?

Passo 1

Para entendermos o que será impresso por esse programa temos primeiro que entender o funcionamento da função f u n c .

Analisando os seus parâmetros conseguimos identificar que ela espera como entrada dois ponteiros para inteiro p x e p x . Em seguida, atribui a p x o endereço armazenado por p y (linha 03). Ou seja, logo no início da função temos tanto p x quanto p y apontando para o mesmo endereço.

Como o enunciado nos diz que os dados inserido pelo usuário são 3 e 4 e esses são passados como parâmetros dessa função através dos endereços de x e y , podemos dizer que tanto p x quanto p y apontam para a variável y .

Passo 2

Na linha seguinte (linha 04 da função) temos a atribuição da multiplicação entre o valor armazenado pela variável apontada por p y e o valor da variável apontada por p x a variável apontada por p x . Como ambos os ponteiros apontam para mesma variável, que é y que armazena o valor 4, isso não passa de uma atribuição a y de 4 2 = 16 .

Passo 3

Continuando, na linha 5 da função, temos a atribuição da soma entre o valor da variável apontada por p x e 2 a variável apontada por p x . Como o ponteiro p x aponta para a variável y (que armazena o valor 16), isso não passa de uma atribuição a y de 16 + 2 = 18 .

Resposta

Por fim, na linha 14 do programa, temos a impressão dos valores de x e y . Como dentro da função f u n c ambos os ponteiros passaram a apontar para y , não houve manipulações em x que por esse motivo manteve o seu valor original de 3. Já em relação a y , o resultado obtido após todas as manipulações dentro da função foi 18 e esse que será impresso na tela.

Sendo assim, a impressão será x = 3 , y = 18 .