• Matéria: Informática
  • Autor: amaquina900
  • Perguntado 4 anos atrás

Analise o seguinte código implementado na linguagem C:

int soma(int *a, int *b) {

*a = *a + *b;

return *a;

}

int main() {

int x=5, y=3;

y = soma(&x, &y);

printf(¿%d¿, x+y);

return(0);

}

Qual será o valor exibido na saída padrão do sistema?

resposta: 16


isabellakayene1712: me marca como melhor resposta pfv

Respostas

respondido por: facebookp5wymi
26

Resposta:

Resposta correta: 16

Explicação:

Na questão temos o exemplo de passagem de parâmetro por referência, em que usamos o endereço da memória da variável e não uma cópia do seu valor. Passagem de parâmetros por referência é representado pelo 'e comercial' (&)

No trecho abaixo estamos passando o endereço da variável, portanto qualquer alteração em qualquer uma das variáveis será refletido em todo o algoritmo:

y = soma(&x, &y) // y= soma(5,3)

y(int *a, int *b)

    *a = *a + *b  // a= 5 + 3

                        //  a=8    

return *a         // Iremos retornar 8 e como alteramos o endereço da variável x ela também valera 8

y=8                // Y recebe o retorno da função

printf( x+y)  // (8 + 8)

printf valerá 16

Perguntas similares