Considere o seguinte programa escrito na sintaxe C:
void xpto(int a, int b, int c)
{
a = b + c;
b = b * c;
}
void main()
{
int x = 2;
int y = 3;
xpto(x, y, x + y);
printf("%d", x);
printf("%d", y);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
- Parâmetros são passados por valor;
- Parâmetros são passados por referência;
- Parâmetros são passados por nome;
- Parâmetros são passados por valor-resultado.
Parâmetros são passados por valor| Variável | Inicial | xpto(x, y, x + y) |
|---|
| x | 2 | 2 |
| y | 3 | 3 |
| a | | 2 8 |
| b | | 3 15 |
| c | | 5 |
Parâmetros são passados por referência| Variável | Inicial | xpto(x, y, x + y) |
|---|
| x | 2 | 2 8 |
| y | 3 | 3 15 |
| a | | x |
| b | | y |
| c | | 5 |
Parâmetros são passados por nome| Variável | Inicial | xpto(x, y, x + y) |
|---|
| x | 2 | 2 8 |
| y | 3 | 3 33 |
| a | | x |
| b | | y |
| c | | x + y |
Parâmetros são passados por valor-resultado| Variável | Inicial | xpto(x, y, x + y) |
|---|
| x | 2 | 2 8 |
| y | 3 | 3 15 |
| a | | 2 8 (x) |
| b | | 3 15 (y) |
| c | | 5 |