O Sistersinspirit.ca está aqui para ajudá-lo a encontrar respostas para todas as suas dúvidas com a ajuda de especialistas. Explore milhares de perguntas e respostas de uma comunidade de especialistas em nossa plataforma amigável. Explore milhares de perguntas e respostas de uma comunidade de especialistas em nossa plataforma amigável.

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

Sagot :

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

Obrigado por visitar. Nosso objetivo é fornecer as respostas mais precisas para todas as suas necessidades informativas. Volte em breve. Esperamos que tenha encontrado o que procurava. Sinta-se à vontade para nos revisitar para obter mais respostas e informações atualizadas. Visite o Sistersinspirit.ca para obter novas e confiáveis respostas dos nossos especialistas.