Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

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?

  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ávelInicialsub (i, v[i], v[4])
i0 
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ávelInicialsub (i, v[i], v[4])
i00 1 2
v[0]11 3
v[1]2 
v[2]3 
v[3]4 
v[4]55 0
a i
b v[0]
c v[4]
Parâmetros são passados por nome
VariávelInicialsub (i, v[i], v[4])
i00 1 2
v[0]1 
v[1]22 3
v[2]3 
v[3]4 
v[4]55 0
a i
b v[i]
c v[4]
Parâmetros são passados por valor-resultado
VariávelInicialsub (i, v[i], v[4])
i00 2
v[0]11 3
v[1]2 
v[2]3 
v[3]4 
v[4]55 0
a 0 1 2 (i)
b 1 3 (v[0])
c 5 0 (v[4])