Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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?

  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ávelInicialfunc(i, 5, v[i], v[i] * 2)
i0 
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ência
VariávelInicialfunc(i, 5, v[i], v[i] * 2)
i0 
v[0]11 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 nome
VariávelInicialfunc(i, 5, v[i], v[i] * 2)
i0 
v[0]11 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-resultado
VariávelInicialfunc(i, 5, v[i], v[i] * 2)
i00 0
v[0]11 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