Logo Passei Direto
Buscar
. Analise o seguinte código implementado na linguagem C com passagem de parâmetro por referência entre a função main e a função soma.


1 int soma(int *a, int *b) {
2 *a = *a + *b;
3 return *a;
4 }
5
6 int main() {
7 int x=5, y=3;
8 y = soma(x, y);
9 printf(“%d”, x+y);
10 return(0);
11 }



Assinale a opção que corrige o código:
Linha 1: int soma(int a, int b) {

Linha 8: printf(“%d”, y);

Linha 6: int x=5; int y=3;

Linha 2: a = *a + *b;

Linha 7 y = soma(&x, &y);

Comentário
User badge image
Antonio Barbosa

ano passado

Respostas

User badge image

Ed Verified user icon

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);.

Essa resposta te ajudou?

0
Dislike0

Ainda com dúvidas?

Envie uma pergunta e tenha sua dúvida de estudo respondida!

Mais conteúdos dessa disciplina