Considere o seguinte programa escrito na sintaxe C:
void func (int a, int b, int c, int d)
{
for (int j = a; j < b; j++)
{
c = c + d;
}
}
void main()
{
int i = 0;
int v[5] = {1, 2, 3, 4, 5};
func(i, 5, v[i], v[i] * 2);
}
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 func
?
- 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 | func(i, 5, v[i], v[i] * 2) |
---|
i | 0 | |
v[0] | 1 | |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | |
a | | 0 |
b | | 5 |
c | | 1 3 5 7 9 11 |
d | | 2 |
j | | 0 1 2 3 4 5 |
Parâmetros são passados por referênciaVariável | Inicial | func(i, 5, v[i], v[i] * 2) |
---|
i | 0 | |
v[0] | 1 | 1 3 5 7 9 11 |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | |
a | | i |
b | | 5 |
c | | v[0] |
d | | 2 |
j | | 0 1 2 3 4 5 |
Parâmetros são passados por nomeVariável | Inicial | func(i, 5, v[i], v[i] * 2) |
---|
i | 0 | |
v[0] | 1 | 1 3 9 27 81 243 |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | |
a | | i |
b | | 5 |
c | | v[i] |
d | | v[i] * 2 |
j | | 0 1 2 3 4 5 |
Parâmetros são passados por valor-resultadoVariável | Inicial | func(i, 5, v[i], v[i] * 2) |
---|
i | 0 | 0 0 |
v[0] | 1 | 1 11 |
v[1] | 2 | |
v[2] | 3 | |
v[3] | 4 | |
v[4] | 5 | |
a | | 0 (i) |
b | | 5 |
c | | 1 3 5 7 9 11 (v[0]) |
d | | 2 |
j | | 0 1 2 3 4 5 |