(Price, 2005) Considere o seguinte programa escrito na sintaxe C:
void xpto(int x, int y, int z)
{
x = y + 1;
z = x + y;
}
void main()
{
int a = 3;
int b = 5;
xpto(a, a + b, b);
printf("%d - %d", a, b);
}
Para cada um dos métodos de passagem de parâmetros a seguir, quais são os valores impressos pelo programa.
- Parâmetros são passados por valor;
- Parâmetros são passados por referência;
- Parâmetros são passados por nome;
- Parâmetros são passados por valor-resultado.
Parâmetros são passados por valor| Variável | Inicial | xpto(a, a + b, b) |
|---|
| a | 3 | 3 |
| b | 5 | 5 |
| x | | 3 9 |
| y | | 8 |
| z | | 5 17 |
Parâmetros são passados por referência| Variável | Inicial | xpto(a, a + b, b) |
|---|
| a | 3 | 3 9 |
| b | 5 | 5 17 |
| x | | a |
| y | | 8 |
| z | | b |
Parâmetros são passados por nome| Variável | Inicial | xpto(a, a + b, b) |
|---|
| a | 3 | 3 9 |
| b | 5 | 5 23 |
| x | | a |
| y | | a + b |
| z | | b |
Parâmetros são passados por valor-resultado| Variável | Inicial | xpto(a, a + b, b) |
|---|
| a | 3 | 3 9 |
| b | 5 | 5 17 |
| x | | 3 9 (a) |
| y | | 8 |
| z | | 5 17 (b) |
Price, Ana Maria de Alencar. (2005). Implementação de Linguagens de Programação: compiladores. 3ª edição. Porto Alegre: Instituto de Informática da UFRGS: Sagra Luzzatto. 212 páginas.