No que se refere à passagem de parâmetros para uma função, dois termos presentes e conhecidos em programação são a passagem por valor e a passagem por referência. Sobre essas maneiras de passar parâmetros para funções, verifica-se que
- A)a função acessa diretamente a variável original tanto na passagem por valor como na por referência, sendo a principal diferença entre os dois tipos a eficiência no processamento.
Errada, porque na passagem por valor a função não acessa diretamente a variável original, e a diferença não é apenas eficiência.
- B)uma cópia do valor do argumento é passada para a função na passagem por valor, enquanto a função acessa diretamente a área de memória da variável original na passagem por referência.
Certa, pois por valor passa-se uma cópia do argumento e por referência a função acessa a memória da variável original.
- C)o tipo de informação que deve ser passado é uma constante, tanto em passagem por valor como por referência.
Errada, porque parâmetro não precisa ser constante; ele pode ser uma variável, expressão ou até um valor literal, conforme a linguagem.
- D)o parâmetro, na passagem por valor, deve ser um tipo primitivo, como um inteiro ou um caractere, enquanto, na passagem por referência, ele deve ser um tipo complexo, como um objeto ou uma estrutura.
Errada, porque a distinção entre valor e referência não depende de o dado ser primitivo ou complexo.
- E)o parâmetro do tipo complexo, como um objeto ou uma estrutura, não é aceito nem na passagem por valor, nem na por referência.
Errada, porque tipos complexos podem ser passados tanto por valor quanto por referência, dependendo da linguagem e da forma de implementação.
Gabarito: B
Na passagem por valor, a função recebe uma cópia do conteúdo do argumento. Isso significa que qualquer alteração feita dentro da função atua sobre essa cópia, sem mexer diretamente na variável original. Já na passagem por referência, a função trabalha com uma forma de acesso ao próprio dado original, então mudanças feitas lá dentro podem refletir fora da função. Em muitas linguagens modernas, isso pode aparecer com ponteiros, referências ou até objetos passados por referência de forma implícita, mas a ideia central continua a mesma: cópia versus acesso ao original. O ponto principal aqui é que o enunciado cobra a diferença conceitual clássica, e não detalhes de uma linguagem específica. Em prova, pense assim: valor = a função ganha uma fotocópia; referência = a função ganha a chave da casa. Uma mexida na fotocópia não altera o original, mas com a chave dá para alterar direto. Esse é exatamente o raciocínio da alternativa B. Por isso, o gabarito é B: ela descreve corretamente que, na passagem por valor, vai uma cópia do valor do argumento, enquanto na passagem por referência a função acessa a área de memória da variável original. Em linguagem de concurso, isso é a distinção clássica ensinada em programação básica. Só um cuidado: algumas linguagens usam sintaxes diferentes e nem sempre chamam tudo de forma idêntica, mas a banca está cobrando o conceito geral. Então, se aparecer a velha confusão entre copiar o conteúdo e acessar o original, fique atento, porque é aí que a questão costuma pegar.