Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa escrito na sintaxe C:

void next(int w, int x, int y, int z)
{
for(int i = 0; i < 3; i++)
{
w = y;
x = z;
}
}

void main()
{
int a = 1;
int b = 2;

next(b, a, b + a, b - a);

printf("%d", a);
printf("%d", b);
}

Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.

  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ávelInicialnext(b, a, b + a, b - a)
a11
b22
w 2 3 3 3
x 1 1 1 1
y 3
z 1
i 0 1 2 3
Parâmetros são passados por referência
VariávelInicialnext(b, a, b + a, b - a)
a11 1 1 1
b22 3 3 3
w b
x a
y 3
z 1
i 0 1 2 3
Parâmetros são passados por nome
VariávelInicialnext(b, a, b + a, b - a)
a11 2 3 5
b22 3 5 8
w b
x a
y b + a
y b - a
i 0 1 2 3
Parâmetros são passados por valor-resultado
VariávelInicialnext(b, a, b + a, b - a)
a11 1
b22 3
w 2 3 3 3 (b)
x 1 1 1 1 (a)
y 3
z 1
i 0 1 2 3