Praca z C ++ nie jest trudnym zadaniem, jeśli masz już doświadczenie w C, ponieważ obaj dzielą się mnóstwem pojęć. Ale C ++ ma pewne koncepcje, które nie są częścią paradygmatu C. W tym artykule Call by Reference in C ++ omówimy jedną z takich koncepcji, czyli zmienne referencyjne i ich zastosowania w następującej kolejności:
- Zmienne odniesienia
- Wywołanie według wartości i wywołanie przez odwołanie w C ++
- Powrót przez odniesienie w C ++
- Call by Reference Vs Pointer
Zmienne odniesienia
C ++ daje nam nowy typ zmiennej, tj. Zmienną referencyjną. Możemy myśleć o zmiennej referencyjnej jako o pseudonimie naszej oryginalnej zmiennej. To jest to, że jest to dokładna funkcjonalność zmiennej referencyjnej w jednym wierszu.
Na przykład, jeśli masz na imię Harrison, ale mieszkasz w domu, członkowie Twojej rodziny nazywają Cię Harry. Przejdźmy teraz do szczegółów zmiennych referencyjnych. Deklaracja i użycie tego typu zmiennej różni się od zwykłych zmiennych, których używamy, ale są bardzo podobne do zmiennych wskaźnikowych.
Składnia:
int Hello = 1 int * ptr int & World = Hello
Kiedy tworzymy zmienną „Hello” zawierającą wartość „1”, segment pamięci jest używany do zapisywania wartości „1”, nazwa tego segmentu będzie brzmiała „Hello”, a adres tego segmentu będzie na przykład wartością szesnastkową0x64. kiedy piszemyint& Świat = Witaj
Tworzona jest zmienna „Świat” wskazująca na to samo miejsce w pamięci.
Włączenie wiersza World ++ spowoduje zmiany w adresie 0x64, co oznacza, że zmieni się również wartość zmiennej „Hello”. Niektórzy mogą wskazać, że jak są zmienne odniesienia inne niż zmienne wskaźnikowe, które będziemy omawiać w dalszej części tego postu.
Wywołanie według wartości i wywołanie przez odwołanie w C ++
Zadzwoń według wartości: Call by Value to powszechnie stosowana metoda. W większości przypadków będziesz używać metody wywołania według wartości, ponieważ nie chcesz, aby oryginalne wartości zmiennych były zmieniane. Dlatego użyliśmy metody call by value do wywołania funkcji, przekazywane są tylko wartości zmiennych. Osiąga się to poprzez tworzenie w pamięci zmiennych fikcyjnych.
#include using namespace std void add (int a, int b) {a = a + 10 b = b + 10 cout<<'Value of a = '<Na powyższym obrazku widzimy, że gdy tylko wywołamy funkcję add (), wartości zmiennych x i y są kopiowane do zmiennych a i b. A i b są zmiennymi fikcyjnymi.
Zadzwoń przez numer referencyjny: Porozmawiajmy teraz o wywołaniu metodą referencyjną. W tej metodzie nie są tworzone oddzielne zmienne zastępcze, do metody przekazywane jest odwołanie do już istniejącej zmiennej. To odniesienie wskazuje na to samo miejsce w pamięci, stąd oddzielne kopie nie są wykonywane w pamięci. Ważną kwestią, na którą należy tutaj zwrócić uwagę, jest to, że zmiany dokonane w zmiennych odniesienia znajdują odzwierciedlenie w zmiennej fikcyjnej.
#include using namespace std void add (int & a, int & b) {a = a + 10 b = b + 10 cout<<'Value of a = '< int & min (int & a, int & b) {if (aJak widać, powyższa funkcja wygląda inaczej niż zwykłe funkcje, ponieważ typem zwracanym jest „int &”. Ta funkcja zwraca odniesienie do a lub b w zależności od warunku. Ważną kwestią, na którą należy tutaj zwrócić uwagę, są wartościnie są zwracane.
Jeśli wywołamy funkcję min (x, y) = 10. 10 zostanie przypisane x, jeśli jest minimum, lub y, jeśli y jest minimalne.
Call by Reference Vs Pointer
We wszystkich naszych przykładach widzieliśmy, że zawsze przypisywaliśmy wartość do utworzonej przez nas zmiennej referencyjnej, ponieważ zmienne referencyjne nie mogą mieć wartości NULL, podczas gdy zmienne wskaźnikowe mogą mieć wartość NULL i mogą powodować nieoczekiwane błędy.
Zmiennych odniesienia nie można ponownie przypisać, podczas gdy zmienne wskaźnikowe mogą wskazywać inną zmienną w dalszej części programu.
Zmienna wskaźnikowa przechowuje wartość adresową określonej zmiennej, podczas gdy adres zmiennej odniesienia jest taki sam jak adres zmiennej, do której się odnosi.
W ten sposób dochodzimy do końca tego artykułu Call By Reference w C ++. Mam nadzieję, że rozumiesz różne implementacje wywołania według wartości i referencji oraz różnice między nimi.
Jeśli chcesz dowiedzieć się więcej, zapoznaj się z autorstwa Edureka, zaufanej firmy zajmującej się edukacją online. Szkolenie i certyfikacja J2EE i SOA firmy Edureka ma na celu przeszkolenie zarówno podstawowych, jak i zaawansowanych koncepcji języka Java, a także różnych struktur Java, takich jak Hibernate i Spring.
Masz do nas pytanie? Wspomnij o tym w sekcji komentarzy na tym blogu, a skontaktujemy się z Tobą tak szybko, jak to możliwe.