Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa escrito na sintaxe C:

void sub(int i, int j, int k) {
i = i + j;
k = j + k;
}

void main() {
int x = 5;
int y = 8;

sub(x, x + y, y);

printf("%d", y);
}

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ávelInicialsub(x, x + y, y)
x55
y88
i 5 18
j 13
k 8 21
Parâmetros são passados por referência
VariávelInicialsub(x, x + y, y)
x55 18
y88 21
i x
j 13
k y
Parâmetros são passados por nome
VariávelInicialsub(x, x + y, y)
x55 18
y88 34
i x
j x + y
k y
Parâmetros são passados por valor-resultado
VariávelInicialsub(x, x + y, y)
x55 18
y88 21
i 5 18 (x)
j 13
k 8 21 (y)