Considere o seguinte programa escrito na sintaxe C:
void sub (int a, int b, int c)
{
a = a + 1;
b = a + 2;
a = a + 1;
c = b - 3;
}
void main()
{
int i = 0;
int v[5] = {1, 2, 3, 4, 5};
sub (i, v[i], v[4]);
}
Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis i
e v
após a chamada ao método sub
?
- 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 (i, v[i], v[4]) |
---|
i | 0 | |
v[0] | 1 | |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | |
a | | 0 1 2 |
b | | 1 3 |
c | | 5 0 |
Parâmetros são passados por referênciaVariável | Inicial | sub (i, v[i], v[4]) |
---|
i | 0 | 0 1 2 |
v[0] | 1 | 1 3 |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | 5 0 |
a | | i |
b | | v[0] |
c | | v[4] |
Parâmetros são passados por nomeVariável | Inicial | sub (i, v[i], v[4]) |
---|
i | 0 | 0 1 2 |
v[0] | 1 | |
v[1] | 2 | 2 3 |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | 5 0 |
a | | i |
b | | v[i] |
c | | v[4] |
Parâmetros são passados por valor-resultadoVariável | Inicial | sub (i, v[i], v[4]) |
---|
i | 0 | 0 2 |
v[0] | 1 | 1 3 |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | 5 0 |
a | | 0 1 2 (i) |
b | | 1 3 (v[0]) |
c | | 5 0 (v[4]) |