C++

C++ Chiama per indirizzo e Chiama per riferimento

C++ Chiama per indirizzo e Chiama per riferimento

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

Che cos'è una funzione?

Prima di entrare nell'argomento vero e proprio, 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 desidera.

Ecco la sintassi per definire una funzione:

Return_type Function_Name (Elenco parametri di input)

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

Cos'è l'indirizzo??

Esistono due tipi di variabili in C++ (simili al linguaggio C): Variabile dati e Variabile indirizzo. La variabile indirizzo viene utilizzata per memorizzare 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 dichiarazione, dichiariamo una variabile puntatore, i.e. “ptr” e inizializzandolo con l'indirizzo della variabile “i”.

Cos'è il riferimento??

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

int a = 200;
int &r = a;

In questo esempio, abbiamo dichiarato un intero, i.e. “a” e poi dichiarata 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 / Passa per valore
  2. Chiama per indirizzo / Passa per indirizzo
  3. Chiama per riferimento / Passa per riferimento

In questo articolo, discutiamo di - Chiamata per indirizzo e Chiamata per riferimento.

Cos'è Chiama per indirizzo / Passa per indirizzo??

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

Cos'è Chiama per riferimento / Passa per riferimento?

Nel metodo Chiama per riferimento/Passa per riferimento, i parametri della funzione vengono passati come riferimento. All'interno della definizione della funzione, si accede ai parametri attuali 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 - Chiamata per indirizzo (1)
  2. Esempio-2 - Chiamata per indirizzo (2)
  3. Esempio-3 - Chiamata per riferimento (1)
  4. Esempio-4 - Chiamata per riferimento (2)

I primi due esempi sono forniti per spiegare come funziona il metodo Call by address in C++. Gli ultimi due esempi servono a spiegare il concetto di Call by reference.

Esempio-1 - Chiamata per indirizzo (1)

In questo esempio, dimostreremo il meccanismo di chiamata per indirizzo. Dalla funzione “main()”, chiamiamo 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 della funzione "hello()".

#includere
usando lo 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;

intero principale()

variabile int = 100;
cout << "Value of var inside main() function = " << var << endl;
ciao(&var);
cout << endl << "Value of var inside main() function = " << var << endl;
restituisce 0;

Esempio-2 - Chiamata per indirizzo (2)

Questo è un altro esempio del metodo di chiamata per indirizzo. In questo esempio, spiegheremo come utilizzare il metodo call by address per risolvere un problema reale. Ad esempio, vogliamo scrivere una funzione per scambiare due variabili. Se usiamo il meccanismo di chiamata per valore per scambiare due variabili, le variabili effettive non vengono scambiate nella funzione chiamante. Il metodo di chiamata per indirizzo può essere utilizzato in tale scenario such. In questo esempio, stiamo passando l'indirizzo di var_1 (&var_1) e var_2 (&var_2) alla funzione "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 l'esecuzione della funzione "mySwap()".

#includere
usando lo 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;

intero principale()

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 << endl;
cout << "Calling mySwap() function - Call by address." << endl << endl;
mioScambio(&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;
restituisce 0;

Esempio-3 - Chiamata per riferimento (1)

In questo esempio, dimostreremo come funziona la chiamata per riferimento in Do++. Nella definizione della funzione "ciao()", 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 attuale (var) all'interno della funzione “main()”.

#includere
usando lo 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;

intero principale()

variabile int = 100;
cout << "Value of var inside main() function = " << var << endl;
ciao(var);
cout << endl << "Value of var inside main() function = " << var << endl;
restituisce 0;

Esempio-4 - Chiamata per riferimento(2)

Questo è un altro esempio di chiamata per riferimento. In questo esempio, dimostreremo come funziona la chiamata per riferimento in C++ con l'aiuto di un esempio del mondo reale. La funzione “mySwap()” viene 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
usando lo 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;

intero principale()

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 << endl;
cout << "Calling mySwap() function - Call by reference." << endl << 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;
restituisce 0;

Conclusione

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

Aggiungi i gesti del mouse a Windows 10 utilizzando questi strumenti gratuiti
Negli ultimi anni computer e sistemi operativi si sono notevolmente evoluti greatly. C'è stato un tempo in cui gli utenti dovevano usare i comandi per...
Controlla e gestisci il movimento del mouse tra più monitor in Windows 10
Gestore mouse con doppio display ti consente di controllare e configurare il movimento del mouse tra più monitor, rallentando i suoi movimenti vicino ...
WinMouse ti consente di personalizzare e migliorare il movimento del puntatore del mouse su PC Windows
Se vuoi migliorare le funzioni predefinite del puntatore del mouse, usa freeware WinMouse. Aggiunge più funzionalità per aiutarti a ottenere il massim...