atividade estruturada completa
-1.a) Variável global : x
Variáveis locais :
1)numero e outroNumero – escopo : main.
Veja o trecho : int main()
{ int numero = 10, outroNumero;
//continua
2) numero - escopo : Teste1
3) numero e valor – escopo : Teste2
4) 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ção Teste 3: Passagem de parâmetro por valor.
c) 1) Variável global x recebe 20. Ela será visível na main e nas outras funções.
2) Na main, a variável local numero recebe 10 na declaração.
3) Chamada para a função Teste1, passando o valor de numero, ou seja, 10.
4) 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.
5) 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.
6) 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).
7) 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.
8) Na linha outroNumero =