Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa escrito na sintaxe C:

void serie(int i, int lo, int hi, int term, int result)
{
result = term;

for (i = lo; i < hi; i++)
{
result = result + term;
}
}

void main()
{
int k = 0;

int v[5] = {0, 0, 0, 0, 0};

serie(k, 1, 5, 2 * k + 1, v[k]);
}

Para cada um dos métodos de passagem de parâmetros listados a seguir, quais são os valores das variáveis k e v após a chamada ao método serie?

  1. Parâmetros são passados por valor;
  2. Parâmetros são passados por referência;
  3. Parâmetros são passados por nome;
  4. Parâmetros são passados por valor-resultado.

 

Parâmetros são passados por valor
VariávelInicialserie(k, 1, 5, 2 * k + 1, v[k])
k0 
v[0]0 
v[1]0 
v[2]0 
v[3]0 
v[4]0 
i 0 1 2 3 4 5
lo 1
hi 5
term 1
result 0 1 2 3 4 5
Parâmetros são passados por referência
VariávelInicialserie(k, 1, 5, 2 * k + 1, v[k])
k00 1 2 3 4 5
v[0]00 1 2 3 4 5
v[1]0 
v[2]0 
v[3]0 
v[4]0 
i k
lo 1
hi 5
term 1
result v[0]
Parâmetros são passados por nome
VariávelInicialserie(k, 1, 5, 2 * k + 1, v[k])
k00 1 2 3 4 5
v[0]00 1
v[1]00 3
v[2]00 5
v[3]00 7
v[4]00 9
i k
lo 1
hi 5
term 2 * k + 1
result v[k]
Parâmetros são passados por valor-resultado
VariávelInicialserie(k, 1, 5, 2 * k + 1, v[k])
k00 5
v[0]00 5
v[1]0 
v[2]0 
v[3]0 
v[4]0 
i 0 1 2 3 4 5 (k)
lo 1
hi 5
term 1
result 0 1 2 3 4 5 (v[0])