O documento discute os dois principais mecanismos de passagem de parâmetros em funções em C: por valor e por referência. A passagem por valor faz uma cópia dos parâmetros, enquanto a passagem por referência passa os endereços dos parâmetros, permitindo alterações permanentes. Exemplos ilustram como declarar e usar cada mecanismo. Finalmente, exercícios propõem implementar funções usando as diferentes formas de passagem de parâmetros.
1. 1
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof. Yandre Maldonado e Gomes da Costa
Prof.YandreMaldonado-1
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
• A passagem de parâmetros em uma função
pode se dar de diferentes formas. As duas
principais são:
– Por valor
– Por referência
Prof.YandreMaldonado-2
– Por valor:
• neste mecanismo, o parâmetro formal faz uma cópia
do valor do parâmetro real, fazendo com que todas
as ações da função manipulem somente o valor
copiado, evitando a alteração do valor original;
• Normalmente utilizada nos casos em que se
pretende apenas fornecer um valor (argumento de
entrada) para a função sem a necessidade de
preservar as alterações que ocorram sobre o mesmo;
Prof.YandreMaldonado-3
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
2. 2
• Exemplo:
– Uma função que incrementa o valor de um
objeto inteiro passado como parâmetro por
valor.
void incrementa (int x)
{
x=x+1;
}
void incrementa (int x)
{
x=x+1;
}
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof.YandreMaldonado-4
– Por referência:
• Neste mecanismo, a relação existente entre os
parâmetros formal e real está no endereço dos
parâmetros e não em seus valores;
• O que realmente é passado é o endereço do
parâmetro real para o formal. Assim, quem sofre a
ação é o próprio parâmetro real;
• Esta ação é de caráter permanente;
• Normalmente utilizada quando se pretende preservar
as alterações ocorridas sobre o objeto passado como
parâmetro real.
* Principalmente nos casos em que se deseja preservar
alterações ocorridas em mais de um valor.
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof.YandreMaldonado-5
• Exemplo:
– Uma função que incrementa o valor de um
objeto inteiro passado como parâmetro por
referência.
void incrementa (int *x)
{
*x=*x+1;
}
void incrementa (int *x)
{
*x=*x+1;
}
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof.YandreMaldonado-6
3. 3
• Em C, pode-se distinguir a passagem por
valor ou referência da seguinte forma:
• Na declaração:
void F1 (int x);
void F2 (int *x);
• No uso:
int a;
...
F1 (a);
F2(&a);
Por valorPor valor
Por referênciaPor referência
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof.YandreMaldonado-7
• Exercício:
1. Construa uma função em C que receba como
argumentos dois valores inteiros e calcule e
exiba os valores obtidos pela multiplicação
entre ambos e pela adição entre ambos.
Construa três soluções diferentes:
• Com passagem de parâmetros por valor;
• Com passagem de parâmetros por referência;
• Sem passagem de parâmetros;
2. Construa uma função em C que receba como
parâmetros dois objetos inteiros e faça uma
troca entre os valores de ambos.
PASSAGEM DE PARÂMETROSPASSAGEM DE PARÂMETROS
Prof.YandreMaldonado-8