back

Mini Teste 15: Âmbito das variáveis, passagem por valor e passagem por referência

1. Qual o âmbito de cada objecto no programa a seguir?

float a;

void proc1(float b)
{
  float c;
  int d = 10;

  c = b+ (float) d;
  printf("%f", c);
}

float proc2(float *e)
{
  float f = 20.0;

  return(*e+f);
}

float g;

void main()
{
  float h;

  a = 10.0;
  proc1(a); 
  proc2(&a);
}

 
local
global
parâmetro
nenhum
a
b
c
d
e
f
g
h
2. Considere o programa abaixo
int x;

void show(int *a)
{
  printf("%d ", *a);
  *a = *a + 1;
}

void main()
{
  x = 0;
  printf("%d ", x);
  show(&x);
  printf("%d ", x);
}
O procedimento usa a técnica de
Passagem por valor
Passagem por referência
e, por isso o output será

3. Qual será o output do programa a seguir?
/* double names */
int x;

void show()
{
  int x;

  x = 1;
  x = x*x;
  printf("%d ", x);
}

void main()
{
  x = 0;
  show;
  printf("%d ", x);
}
Não é permitido usar o mesmo nome para uma variável duas vezes!
0 0
1 0
0 1
1 1