C ++ chiamata per indirizzo e chiamata per riferimento

C ++ chiamata per indirizzo e chiamata per riferimento
C ++ è un linguaggio di programmazione per uso generale flessibile. È stato originariamente creato da Bjarne Stroustrup, un informatico danese, nel 1985. C ++ supporta metodi di passaggio a tre parametri, i.e., Chiama per valore, chiamata per indirizzo e chiama per riferimento. In questo articolo, discuteremo di Call per indirizzo e chiamata per meccanismo di riferimento.

Cos'è una funzione?

Prima di saltare nell'argomento reale, dobbiamo capire qual è la funzione in c++. Molti di voi potrebbero già avere familiarità con le funzioni.

Una funzione è fondamentalmente un pezzo di codice che può essere utilizzato per eseguire un determinato compito. Una funzione viene utilizzata principalmente per ridurre il codice ripetitivo in un programma C ++. Prende input come parametri e restituisce l'output come valore di ritorno. Se definiamo la funzione una volta, possiamo chiamarla/usarla più volte nella parte successiva del nostro programma. In questo modo, salviamo molto codice ripetitivo nel programma.

Ogni programma C ++ deve avere la funzione "Main ()". La funzione "Main ()" è il punto di ingresso per un programma C ++. Oltre alla funzione "main ()", il programmatore può definire tutte le funzioni che vogliono.

Ecco la sintassi della definizione di una funzione:

Return_type function_name (elenco dei parametri di input)

La funzione in C ++ può accettare 0 o più numero di parametri di input, mentre può restituire un solo valore di ritorno.

Cos'è l'indirizzo?

Esistono due tipi di variabili in C ++ (Simile a C Language) - Variabile di dati e indirizza la variabile. La variabile dell'indirizzo viene utilizzata per archiviare l'indirizzo di un'altra variabile di dati. Ad esempio, consideriamo il seguente frammento di codice:

int i = 100;
int *ptr = & i;

Qui, la prima affermazione ci dice che la variabile "i" è una variabile di dati e sta memorizzando il valore 100. Nella seconda affermazione, stiamo dichiarando una variabile puntatore, i.e. "PTR" e inizializzandolo con l'indirizzo della variabile "I".

Cosa è riferimento?

Il riferimento è un'altra potente caratteristica del linguaggio C ++. Consideriamo il seguente frammento di codice:

int a = 200;
int & r = a;

In questo esempio, abbiamo dichiarato un numero intero, io.e. "A" e quindi ha dichiarato una variabile di riferimento "R", che viene inizializzata con il valore di "A". Quindi, la variabile di riferimento non è altro che un alias di un'altra variabile.

Metodi di passaggio dei parametri:

Esistono tre tipi di metodi di passaggio dei parametri nel linguaggio C ++:

  1. Chiama per valore / pass per valore
  2. Chiama per indirizzo / pass per indirizzo
  3. Chiama per riferimento / pass per riferimento

In questo articolo, stiamo discutendo sul - chiamata per indirizzo e chiamata per riferimento.

Cos'è la chiamata per indirizzo / pass per indirizzo?

Nel caso della chiamata per indirizzo / pass per indirizzo, gli argomenti della funzione vengono passati come indirizzo. La funzione chiamante passa l'indirizzo dei parametri. Le variabili del puntatore sono utilizzate nella definizione della funzione. Con l'aiuto del metodo Call by Indirizzo, la funzione può accedere ai parametri effettivi e modificarli. Vedremo un esempio della sezione Call by Indirizzo successiva di questo articolo.

Ciò che è chiamata per riferimento / passaggio per riferimento?

Nella chiamata per riferimento / pass per metodo di riferimento, i parametri della funzione vengono passati come riferimento. All'interno della definizione della funzione, i parametri effettivi sono accessibili utilizzando la variabile di riferimento.

Esempi:

Ora, poiché comprendiamo il concetto di metodi di passaggio dei parametri, vedremo diversi programmi di esempio per comprendere il meccanismo di passaggio dei parametri in C ++:

  1. Esempio -1 - Chiama per indirizzo (1)
  2. Esempio -2 - Chiama per indirizzo (2)
  3. Esempio -3 - Chiama per riferimento (1)
  4. Esempio -4 - Chiama per riferimento (2)

Vengono forniti i primi due esempi per spiegare come funziona il metodo Call by Address in C++. Gli ultimi due esempi sono di spiegare la chiamata per concetto di riferimento.

Esempio -1 - Chiama per indirizzo (1)

In questo esempio, dimostreremo la chiamata per meccanismo di indirizzo. Dalla funzione "main ()", stiamo chiamando la funzione "hello ()" e passiamo l'indirizzo di "var". Nella definizione della funzione, stiamo ricevendo l'indirizzo di "var" in una variabile puntatore, i.e., "P". All'interno della funzione Ciao, il valore di "var" viene modificato in 200 con l'aiuto del puntatore. Pertanto, il valore di "var" viene modificato in 200 all'interno della funzione "main ()" dopo la chiamata di funzione "hello ()".

#includere
Utilizzo dello spazio dei nomi std;
void ciao (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;
ciao (& var);
cout << endl << "Value of var inside main() function = " << var << endl;
restituzione 0;

Esempio -2 - Chiama per indirizzo (2)

Questo è un altro esempio del metodo della chiamata per indirizzo. In questo esempio, spiegheremo come utilizzare il metodo della chiamata per indirizzo. Ad esempio, vogliamo scrivere una funzione per scambiare due variabili. Se utilizziamo il meccanismo di chiamata per valore per scambiare due variabili, le variabili effettive non vengono scambiate nella funzione del chiamante. Il metodo di chiamata per indirizzo può essere utilizzato in tale scenario. In questo esempio, stiamo passando l'indirizzo sia di var_1 (& var_1) che var_2 (& var_2) in "myswap ()". All'interno della funzione "Myswap ()", stiamo scambiando i valori di queste due variabili con l'aiuto dei puntatori. Come puoi vedere nell'output seguente, il valore effettivo di queste variabili viene scambiato nella funzione "main ()" dopo che viene eseguita la funzione "myswap ()".

#includere
Utilizzo dello spazio dei nomi 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;
restituzione 0;

Esempio -3 - Chiama per riferimento (1)

In questo esempio, dimostreremo come la chiamata per riferimento funziona in c++. Nella definizione della funzione "Hello ()", il valore viene ricevuto come variabile di riferimento (& P). Con l'aiuto della variabile di riferimento (i.e., p), siamo in grado di modificare il valore del parametro effettivo (var) all'interno della funzione "main ()".

#includere
Utilizzo dello spazio dei nomi std;
void ciao (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;
ciao (var);
cout << endl << "Value of var inside main() function = " << var << endl;
restituzione 0;

Esempio -4 - Chiama per riferimento (2)

Questo è un altro esempio di chiamata per riferimento. In questo esempio, dimostreremo come la chiamata per riferimento funzioni in C ++ con l'aiuto di un esempio del mondo reale. La funzione "Myswap ()" è chiamata dalla funzione "main ()" con i seguenti parametri - Var_1 e var_2. All'interno della funzione "Myswap ()", stiamo ricevendo i parametri come variabili di riferimento.

#includere
Utilizzo dello spazio dei nomi 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;
restituzione 0;

Conclusione

Comprendere i metodi di passaggio dei parametri in C ++ è molto cruciale. Il linguaggio di programmazione C supporta la chiamata per valore e chiamata solo per indirizzo. Ma, C ++ supporta la chiamata per riferimento insieme ai precedenti due meccanismi. In questo articolo, abbiamo visto diversi esempi di lavoro per comprendere il concetto di chiamata per indirizzo e chiamata per riferimento. Chiama per indirizzo è un metodo molto potente e popolare nelle applicazioni di dominio incorporate.