Quest O 1
a) Variável global : x Variáveis locais : numero e outroNumero – escopo : main. int main() { int numero = 10, outroNumero; //continua numero - escopo : Teste1 numero e valor – escopo : Teste2 n e valor - escopo : Teste3
b) Função main : Não há passagem de parâmetros Função Teste 1 : Passagem de parâmetro por valor Função Teste 2: Passagem de parâmetro por referência FunçãoTeste 3: Passagem de parâmetro por valor
c) Passos : Variável global x recebe 20. Ela será visível na main e nas outras funções. Na main, a variável local numero recebe 10 na declaração. Chamada para a função Teste1, passando o valor de numero, ou seja, 10. Na função Teste1 : Há uma variável local numero (cópia da variável numero da main) que recebeu o valor passado 10. A variável numero local à função Teste1 recebe 10+20, ou seja, numero (local à Teste1) recebe 30. Depois, a variável global x é incrementada para 21. Terminada a função Teste1, a variável local numero deixa de ocupar espaço na memória. Assim, terminada a execução de Teste1, a variável x está visível, com a alteração sofrida, mas a variável numero (local a Teste1) já não mais existe na memória. Volta-se para main, para a 1ª. linha de cout. Neste momento, tem-se que numero (local à main) permanece com o valor 10 e a variável global x vale 21. Chamada para a função Teste2. Neste caso, há uma passagem de parâmetro por referência usando & (ver definição e protótipo da função). Começando a execução de Teste2, vemos o parâmetro numero, a variável local valor e x (variável global). A variável local valor recebe 100 na declaração. O argumento numero (vide chamada da função Teste2) recebe 10 + 100, ou seja, 110 e depois, x é incrementado para 22. Ao terminar a execução de Teste2, tem-se que valor não mais ocupa espaço na memória, x foi de fato modificada e numero (variável local à main) sofreu a alteração realizada em Teste2, passando a valer 110. Na linha outroNumero = Teste3(numero); temos que a variável outroNumero, que é