O que é uma função?
Antes de entrarmos no tópico real, precisamos entender qual é a função em C++. Muitos de vocês já podem estar familiarizados com as funções.
Uma função é basicamente um pedaço de código que pode ser usado para executar uma determinada tarefa. Uma função é usada principalmente para reduzir o código repetitivo em um programa C ++. É necessário a entrada como parâmetros e retorna a saída como um valor de retorno. Se definirmos a função uma vez, podemos ligar/usá -la várias vezes na parte posterior do nosso programa. Dessa forma, economizamos muito código repetitivo no programa.
Cada programa C ++ deve ter a função "Main ()". A função "main ()" é o ponto de entrada para um programa C ++. Além da função "Main ()", o programador pode definir quantas funções quiserem.
Aqui está a sintaxe de definir uma função:
Return_type function_name (lista de parâmetros de entrada)
A função em C ++ pode aceitar 0 ou mais número de parâmetros de entrada, enquanto pode retornar apenas um valor de retorno.
O que é endereço?
Existem dois tipos de variáveis em C ++ (semelhante à linguagem C) - variável de dados e variável de endereço. A variável de endereço é usada para armazenar o endereço de outra variável de dados. Por exemplo, vamos considerar o seguinte snippet de código:
int i = 100;
int *ptr = & i;
Aqui, a primeira declaração nos diz que a variável "i" é uma variável de dados e está armazenando o valor 100. Na segunda declaração, estamos declarando uma variável de ponteiro, eu.e. "PTR", e inicializando com o endereço da variável "eu".
O que é referência?
A referência é outra característica poderosa da linguagem C ++. Vamos considerar o seguinte snippet de código:
int a = 200;
int & r = a;
Neste exemplo, declaramos um número inteiro, eu.e. "A" e depois declarou uma variável de referência "r", que é inicializada com o valor de "a". Portanto, a variável de referência não passa de um alias de outra variável.
Métodos de passagem de parâmetros:
Existem três tipos de métodos de passagem de parâmetros na linguagem C ++:
Neste artigo, estamos discutindo sobre o - Chamada por endereço e chamada por referência.
O que é chamado por endereço / passagem por endereço?
No caso da chamada por endereço / passagem por método de endereço, os argumentos da função são passados como endereço. A função do chamador passa o endereço dos parâmetros. As variáveis de ponteiro são usadas na definição da função. Com a ajuda do método de chamada por endereço, a função pode acessar os parâmetros reais e modificá -los. Veremos um exemplo do método de chamada por endereço posterior seção deste artigo.
O que é chamado por referência / passagem por referência?
Na chamada por método de referência / passagem por referência, os parâmetros de função são passados como uma referência. Dentro da definição da função, os parâmetros reais são acessados usando a variável de referência.
Exemplos:
Agora, como entendemos o conceito de métodos de passagem de parâmetros, veremos vários programas de exemplo para entender o mecanismo de passagem de parâmetros em C ++:
Os dois primeiros exemplos são dados para explicar como o método de chamada por endereço funciona em c++. Os dois últimos exemplos são explicar a chamada por conceito de referência.
Exemplo 1 - Ligue por endereço (1)
Neste exemplo, vamos demonstrar a chamada por mecanismo de endereço. Da função "main ()", estamos chamando a função "hello ()" e passando o endereço de "var". Na definição da função, estamos recebendo o endereço de "var" em uma variável de ponteiro, i.e., "P". Dentro da função Olá, o valor de "var" está sendo alterado para 200 com a ajuda do ponteiro. Portanto, o valor de "var" está sendo alterado para 200 dentro da função "main ()" após a chamada de função "hello ()".
#incluir
usando namespace std;
Void Hello (int *p)
cout << endl << "Inside hello() function : " << endl;
cout << "Value of *p = " << *p << endl;
*p = 200;
cout << "Value of *p = " << *p << endl;
cout << "Exiting hello() function." << endl;
int main ()
int var = 100;
cout << "Value of var inside main() function = " << var << endl;
Olá (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
retornar 0;
Exemplo 2 - Ligue por endereço (2)
Este é outro exemplo do método de chamada por endereço. Neste exemplo, vamos explicar como o método de chamada por endereço pode ser usado para resolver um problema da vida real. Por exemplo, queremos escrever uma função para trocar duas variáveis. Se usarmos a chamada por mecanismo de valor para trocar duas variáveis, as variáveis reais não serão trocadas na função de chamadas. O método de chamada por endereço pode ser usado nesse cenário. Neste exemplo, estamos passando o endereço de var_1 (& var_1) e var_2 (& var_2) para a função "myswap ()". Dentro da função "MySwap ()", estamos trocando os valores dessas duas variáveis com a ajuda dos ponteiros. Como você pode ver na saída abaixo, o valor real dessas variáveis está sendo trocado na função "main ()" após a função "myswap ()" é executada.
#incluir
usando namespace std;
void myswap (int *vptr_1, int *vptr_2)
int temp_var;
temp_var = *vptr_1;
*vptr_1 = *vptr_2;
*vptr_2 = temp_var;
int main ()
int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
cout << "Calling mySwap() function - Call by address." << endl;
myswap (& var_1, & var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
retornar 0;
Exemplo -3 - Ligue por referência (1)
Neste exemplo, vamos demonstrar como a chamada por referência funciona em c++. Na definição da função "hello ()", o valor está sendo recebido como uma variável de referência (& p). Com a ajuda da variável de referência (i.e., p), somos capazes de alterar o valor do parâmetro real (var) dentro da função "main ()".
#incluir
usando namespace std;
Void Hello (Int & P)
cout << endl << "Inside hello() function : " << endl;
cout << "Value of p = " << p << endl;
p = 200;
cout << "Value of p = " << p << endl;
cout << "Exiting hello() function." << endl;
int main ()
int var = 100;
cout << "Value of var inside main() function = " << var << endl;
Olá (var);
cout << endl << "Value of var inside main() function = " << var << endl;
retornar 0;
Exemplo -4 - Ligue por referência (2)
Este é outro exemplo de chamada por referência. Neste exemplo, vamos demonstrar como a chamada por referência funciona em C ++ com a ajuda de um exemplo do mundo real. A função "myswap ()" é chamada da função "main ()" com os seguintes parâmetros - var_1 e var_2. Dentro da função "MySwap ()", estamos recebendo os parâmetros como variáveis de referência.
#incluir
usando namespace std;
void myswap (int & vref_1, int & vref_2)
int temp_var;
temp_var = vref_1;
vref_1 = vref_2;
vref_2 = temp_var;
int main ()
int var_1 = 100;
int var_2 = 300;
cout << "Before calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "Before calling mySwap() function, value of var_2 : " << var_2 << endl;
cout << "Calling mySwap() function - Call by reference." << endl;
myswap (var_1, var_2);
cout << "After calling mySwap() function, value of var_1 : " << var_1 << endl;
cout << "After calling mySwap() function, value of var_2 : " << var_2 << endl;
retornar 0;
Conclusão
Compreender os métodos de passagem de parâmetros em C ++ é muito crucial. A linguagem de programação C suporta a chamada por valor e chamada apenas por endereço. Mas, C ++ suporta chamadas por referência junto com os dois mecanismos anteriores. Neste artigo, vimos vários exemplos de trabalho para entender o conceito de chamada por endereço e chamada por referência. Chamada por endereço é um método muito poderoso e popular em aplicativos de domínio incorporados.