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