A linguagem de programação C permite que os parâmetros sejam passados para as funções de duas maneiras, por valor e por referência. Na passagem por valor, como o próprio nome diz, uma expressão pode ser utilizada na chamada. O valor da expressão é calculada, e o valor resultante é passado para a execução da função. Na passagem por referência, o endereço de uma variável deve ser passado na chamada da função. Dessa forma, a função pode modificar a variável diretamente, o que em geral não é recomendável, mas há situações onde esse recurso é necessário, por exemplo, para a criação de funções que devolvem mais de um valor.
Um exemplo seria se eu quiser calcular a soma de dois numeros basta passar os valores por valor int soma(int a, int b){ return a+b;} e o retono da função já é o suficiente. mas e se fosse preciso retornar qual a soma e o maior valor passado para a função?
Ai poderiamos usar uma referência.
void somaMaior(int a, int b, int *soma, int *maior){
*soma=a+b;
*maior=(a>b)?a:b;
}
int main(int argc, char** argv) {
int soma,maior;
somaMaior(3,4,&soma,&maior);
printf("Soma <%d>",soma);
printf("Maior <%d>",maior);
return (EXIT_SUCCESS);
}
Neste caso em vez de retornar por valor, eu retornei os valores de soma e maior por referência.
Nada impede de ter um return nesta função também. mas os valores que na função foram anotados com * são uma referência a posição de memoria deste parãmetro, e quando eu coloco o & em frente ao parâmetro na chamada de função indico que é o endereço de memória do parâmetro que eu estou passando não uma copia do valor da variável.
Existem dois métodos para passagem de parâmetros em funções, estes são: Passagem por valor e passagem por referência.
A passagem por valor ela permite que usemos uma cópia de uma variável dentro de uma função porem não permite que seja alterado o valor da variável original, apenas de sua cópia.
Já a passagem por referência, é passada uma referência da variável, quase que um endereço de memória, onde podemos alterar o valor da referência. Normalmente me C, essa passagem de parâmetros é feita através de ponteiros.
Para escrever sua resposta aqui, entre ou crie uma conta
Cct0753 - Estrutura de Dados
•UNIFATECIE
Compartilhar