Considere o seguinte programa escrito na sintaxe C:
void xpto(int a, int b, int c)
{
for(int i = 0; i < 3; i++)
{
a = i + c;
b = a * 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 valorVariável | Inicial | xpto(x, y, x + y) |
---|
x | 2 | 2 |
y | 3 | 3 |
a | | 2 5 6 7 |
b | | 3 25 30 35 |
c | | 5 |
i | | 0 1 2 3 |
Parâmetros são passados por referênciaVariável | Inicial | xpto(x, y, x + y) |
---|
x | 2 | 2 5 6 7 |
y | 3 | 3 25 30 35 |
a | | x |
b | | y |
c | | 5 |
i | | 0 1 2 3 |
Parâmetros são passados por nomeVariável | Inicial | xpto(x, y, x + y) |
---|
x | 2 | 2 5 46 4004 |
y | 3 | 3 40 3956 31871840 |
a | | x |
b | | y |
c | | x + y |
i | | 0 1 2 3 |
Parâmetros são passados por valor-resultadoVariável | Inicial | xpto(x, y, x + y) |
---|
x | 2 | 2 7 |
y | 3 | 3 35 |
a | | 2 5 6 7 (x) |
b | | 3 25 30 35 (y) |
c | | 5 |
i | | 0 1 2 3 |