Buscar

Alguem explica como funciona passagem por referência nas funções?

💡 4 Respostas

User badge image

Joao Andre MArtins Dias

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.

 

2
Dislike0
User badge image

Joao Andre MArtins Dias

Não sei se ajudou, é um assunto meio complicado no começo.

 

0
Dislike0
User badge image

RD Resoluções

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.

0
Dislike0

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

✏️ Responder

SetasNegritoItálicoSublinhadoTachadoCitaçãoCódigoLista numeradaLista com marcadoresSubscritoSobrescritoDiminuir recuoAumentar recuoCor da fonteCor de fundoAlinhamentoLimparInserir linkImagemFórmula

Para escrever sua resposta aqui, entre ou crie uma conta

User badge image

Outros materiais

Outros materiais