Considere o seguinte programa escrito na sintaxe C:
void next(int w, int x, int y, int z)
{
for(int i = 0; i < 3; i++)
{
w = y;
x = z;
}
}
void main()
{
int a = 1;
int b = 2;
next(b, a, b + a, b - a);
printf("%d", a);
printf("%d", b);
}
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 valorVariável | Inicial | next(b, a, b + a, b - a) |
---|
a | 1 | 1 |
b | 2 | 2 |
w | | 2 3 3 3 |
x | | 1 1 1 1 |
y | | 3 |
z | | 1 |
i | | 0 1 2 3 |
Parâmetros são passados por referênciaVariável | Inicial | next(b, a, b + a, b - a) |
---|
a | 1 | 1 1 1 1 |
b | 2 | 2 3 3 3 |
w | | b |
x | | a |
y | | 3 |
z | | 1 |
i | | 0 1 2 3 |
Parâmetros são passados por nomeVariável | Inicial | next(b, a, b + a, b - a) |
---|
a | 1 | 1 2 3 5 |
b | 2 | 2 3 5 8 |
w | | b |
x | | a |
y | | b + a |
y | | b - a |
i | | 0 1 2 3 |
Parâmetros são passados por valor-resultadoVariável | Inicial | next(b, a, b + a, b - a) |
---|
a | 1 | 1 1 |
b | 2 | 2 3 |
w | | 2 3 3 3 (b) |
x | | 1 1 1 1 (a) |
y | | 3 |
z | | 1 |
i | | 0 1 2 3 |