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 valor| Variá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ência| Variá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 nome| Variá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-resultado| Variá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 |