C ++ wywołanie adresu i wywołania przez referencję

C ++ wywołanie adresu i wywołania przez referencję
C ++ jest elastycznym językiem programowania ogólnego przeznaczenia. Został pierwotnie stworzony przez Bjarne Stroustrup, duński informatyk, w 1985 roku. C ++ obsługuje trzyparametrowe metody przekazania, i.mi., Zadzwoń według wartości, zadzwoń według adresu i zadzwoń przez odniesienie. W tym artykule omówimy o wezwaniu adresem i połączeniem przez mechanizm referencyjny.

Co to jest funkcja?

Zanim przejdziemy do rzeczywistego tematu, musimy zrozumieć, jaka jest funkcja w C++. Wielu z was może już znać funkcje.

Funkcja to w zasadzie kawałek kodu, którego można użyć do wykonania określonego zadania. Funkcja służy głównie do zmniejszenia powtarzalnego kodu w programie C ++. Przyjmuje wejście jako parametry i zwraca dane wyjściowe jako wartość zwracania. Jeśli raz zdefiniujemy funkcję, możemy ją wywołać/używać wiele razy w późniejszej części naszego programu. W ten sposób zapisujemy dużo powtarzającego się kodu w programie.

Każdy program C ++ powinien mieć funkcję „Main ()”. Funkcja „Main ()” jest punktem wejścia dla programu C ++. Oprócz funkcji „main ()” programista może zdefiniować jak najwięcej funkcji, ile chcą.

Oto składnia definiowania funkcji:

Return_Type Function_name (lista parametrów wejściowych)

Funkcja w C ++ może zaakceptować 0 lub więcej liczby parametrów wejściowych, podczas gdy może zwrócić tylko jedną wartość zwrotną.

Jaki jest adres?

Istnieją dwa typy zmiennych w C ++ (podobne do języka C) - zmienna danych i zmienna adresowa. Zmienna adresu służy do przechowywania adresu innej zmiennej danych. Na przykład rozważmy następujący fragment kodu:

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

Tutaj pierwsze stwierdzenie mówi nam, że zmienna „i” jest zmienną danych i przechowuje wartość 100. W drugim stwierdzeniu deklarujemy zmienną wskaźnika, i.mi. „PTR” i inicjowanie go za pomocą adresu zmiennej „I”.

Co to jest odniesienie?

Odniesienie jest kolejną potężną funkcją języka C ++. Rozważmy następujący fragment kodu:

int a = 200;
int & r = a;

W tym przykładzie zadeklarowaliśmy liczbę całkowitą, ja.mi. „A”, a następnie zadeklarował zmienną odniesienia „R”, która jest inicjowana wartością „A”. Zmienna odniesienia jest niczym innym jak aliasem innej zmiennej.

Metody przekazywania parametrów:

Istnieją trzy typy metod przekazywania parametrów w języku C ++:

  1. Wywołaj wartość / przełę według wartości
  2. Zadzwoń adresem / przejściem adresem
  3. Zadzwoń przez odniesienie / przejście przez odniesienie

W tym artykule omawiamy - połączenie według adresu i połączenia przez odniesienie.

Co nazywa adresem / przejściem przez adres?

W przypadku wywołania metodą adresu / przełęczy argumenty funkcji są przekazywane jako adres. Funkcja dzwoniącego przekazuje adres parametrów. Zmienne wskaźnika są używane w definicji funkcji. Za pomocą metody wywołania według adresu funkcja może uzyskać dostęp do rzeczywistych parametrów i ich modyfikować. Zobaczymy przykład połączenia według metody adresu późniejszej sekcji tego artykułu.

Co nazywa się odniesieniem / przejściem przez odniesienie?

W wywołaniu metodą odniesienia / przejścia przez metodę odniesienia parametry funkcji są przekazywane jako odniesienie. Wewnątrz definicji funkcji, do rzeczywistych parametrów są uzyskiwane za pomocą zmiennej odniesienia.

Przykłady:

Teraz, ponieważ rozumiemy pojęcie metod przekazywania parametrów, zobaczymy kilka przykładowych programów, aby zrozumieć mechanizm przekazywania parametrów w C ++:

  1. Przykład -1 - Zadzwoń według adresu (1)
  2. Przykład -2 - Zadzwoń według adresu (2)
  3. Przykład -3 - wywołanie przez odniesienie (1)
  4. Przykład -4 - wywołanie przez odniesienie (2)

Pierwsze dwa przykłady są podane w celu wyjaśnienia, jak działa połączenie według adresu w C++. Dwa ostatnie przykłady to wyjaśnienie połączenia przez koncepcję odniesienia.

Przykład -1 - Zadzwoń według adresu (1)

W tym przykładzie zademonstrujemy połączenie według mechanizmu adresu. Z funkcji „main ()” nazywamy funkcję „hello ()” i przekazujemy adres „var”. W definicji funkcji otrzymujemy adres „var” w zmiennej wskaźnika, i.mi., "P". Wewnątrz funkcji Witam wartość „var” jest zmieniana na 200 za pomocą wskaźnika. Dlatego wartość „var” zmienia się na 200 w funkcji „main ()” po wywołaniu funkcji „hello ()”.

#włączać
za pomocą przestrzeni nazw 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;
Hello (& var);
Cout << endl << "Value of var inside main() function = " << var << endl;
powrót 0;

Przykład -2 - Zadzwoń według adresu (2)

To kolejny przykład metody wywołania według adresu. W tym przykładzie wyjaśnimy, w jaki sposób można użyć metody wywołania według adresu do rozwiązania problemu z życiem. Na przykład chcemy napisać funkcję, aby zamienić dwie zmienne. Jeśli używamy mechanizmu wywołania według wartości do wymiany dwóch zmiennych, rzeczywiste zmienne nie są zamieniane w funkcji dzwoniącego. Metoda wywołania według adresu może być używana w takim scenariuszu. W tym przykładzie przekazujemy adres zarówno var_1 (& var_1), jak i var_2 (& var_2) do funkcji „myswap ()”. Wewnątrz funkcji „myswap ()” wymieniamy wartości tych dwóch zmiennych za pomocą wskaźników. Jak widać na poniższym wyjściu, faktyczna wartość tych zmiennych jest zamieniana w funkcji „main ()” po wykonywaniu funkcji „myswap ()”.

#włączać
za pomocą przestrzeni nazw 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;
powrót 0;

Przykład -3 - wywołanie przez odniesienie (1)

W tym przykładzie zademonstrujemy, jak zadzwonić przez odniesienie w C++. W definicji funkcji „hello ()” wartość jest odbierana jako zmienna odniesienia (i p). Za pomocą zmiennej odniesienia (i.mi., p), jesteśmy w stanie zmienić wartość rzeczywistego parametru (var) wewnątrz funkcji „main ()”.

#włączać
za pomocą przestrzeni nazw 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;
Hello (var);
Cout << endl << "Value of var inside main() function = " << var << endl;
powrót 0;

Przykład -4 - wywołanie przez odniesienie (2)

To jest kolejny przykład wywołania przez odniesienie. W tym przykładzie zademonstrujemy, w jaki sposób wywołanie przez odniesienie działa w C ++ za pomocą przykładu rzeczywistego. Funkcja „mySwap ()” jest wywoływana z funkcji „main ()” z następującymi parametrami - var_1 i var_2. Wewnątrz funkcji „mySwap ()” otrzymujemy parametry jako zmienne odniesienia.

#włączać
za pomocą przestrzeni nazw 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;
powrót 0;

Wniosek

Zrozumienie metod przekazywania parametrów w C ++ jest bardzo ważne. Język programowania C obsługuje połączenie według wartości i połączenia tylko według adresu. Ale C ++ obsługuje połączenie przez odniesienie wraz z dwoma poprzednimi mechanizmami. W tym artykule widzieliśmy kilka roboczych przykładów, aby zrozumieć koncepcję wywołania według adresu i wywołania przez odniesienie. Call według adresu jest bardzo potężną i popularną metodą w aplikacjach domeny wbudowanej.