Considere o seguinte programa escrito na sintaxe C:
void sub(int i, int j, int k) {
i = i + j;
k = j + k;
}
void main() {
int x = 5;
int y = 8;
sub(x, x + y, y);
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 | sub(x, x + y, y) |
|---|
| x | 5 | 5 |
| y | 8 | 8 |
| i | | 5 18 |
| j | | 13 |
| k | | 8 21 |
Parâmetros são passados por referência| Variável | Inicial | sub(x, x + y, y) |
|---|
| x | 5 | 5 18 |
| y | 8 | 8 21 |
| i | | x |
| j | | 13 |
| k | | y |
Parâmetros são passados por nome| Variável | Inicial | sub(x, x + y, y) |
|---|
| x | 5 | 5 18 |
| y | 8 | 8 34 |
| i | | x |
| j | | x + y |
| k | | y |
Parâmetros são passados por valor-resultado| Variável | Inicial | sub(x, x + y, y) |
|---|
| x | 5 | 5 18 |
| y | 8 | 8 21 |
| i | | 5 18 (x) |
| j | | 13 |
| k | | 8 21 (y) |