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 valorVariá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ênciaVariá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 nomeVariá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-resultadoVariá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) |