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 ++:
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 ++:
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.