Ybadoo - Soluções em Software Livre
Tutoriais
Compiladores

Considere o seguinte programa escrito na sintaxe C:

int sum(int i, int j, int t)
{
int temp = 0;

for(; i <= j; i++)
{
temp = temp + t;
}

return temp;
}

void main()
{
int k = 1;

printf("%d", sum(k, 5, k * k));
}

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ávelInicialsum(k, 5, k * k)
k11
i 1 2 3 4 5 6
j 5
t 1
temp 0 1 2 3 4 5
Parâmetros são passados por referência
VariávelInicialsum(k, 5, k * k)
k11 2 3 4 5 6
i k
j 5
t 1
temp 0 1 2 3 4 5
Parâmetros são passados por nome
VariávelInicialsum(k, 5, k * k)
k11 2 3 4 5 6
i k
j 5
t k * k
temp 0 1 5 14 30 55
Parâmetros são passados por valor-resultado
VariávelInicialsum(k, 5, k * k)
k11 6
i 1 2 3 4 5 6 (k)
j 5
t 1
temp 0 1 2 3 4 5