Ed
ano passado
Vamos analisar o código e as opções para identificar a correção necessária. O código apresentado tem um problema na linha 8, onde a função `soma` está sendo chamada com `x` e `y` passados diretamente, mas a função espera ponteiros (passagem por referência). Portanto, a chamada deve ser feita com os endereços de `x` e `y`. Analisando as opções: 1. Linha 1: int soma(int a, int b) { - Isso mudaria a passagem de referência para passagem por valor, o que não é o que se deseja. 2. Linha 8: printf(“%d”, y); - Isso não corrige o problema, pois `y` não terá o valor correto após a chamada da função `soma`. 3. Linha 6: int x=5; int y=3; - Essa linha já está correta e não precisa de correção. 4. Linha 2: a = *a + *b; - Isso não é uma correção, pois a linha já está correta para a lógica de soma, mas não se aplica ao problema da chamada da função. 5. Linha 7: y = soma(&x, &y); - Esta é a correção correta, pois passa os endereços de `x` e `y`, permitindo que a função `soma` modifique `x` corretamente. Portanto, a opção que corrige o código é: Linha 7: y = soma(&x, &y);.