references c
Poznaj sposoby deklarowania i używania referencji w C ++.
Referencje to główna koncepcja w języku programowania C ++. Chociaż nie jest tak mocny jak wskaźniki, niemniej jednak pozwala nam używać go do pisania wydajnych programów. Głównym zastosowaniem zmiennej referencyjnej jest przekazywanie parametrów do funkcji.
Popularna technika przekazywania parametrów „przekazuj przez odniesienie” wykorzystuje odwołania. W tym samouczku zobaczymy, czym jest odniesienie oraz jak go zadeklarować i użyć. Omówimy również różnice między wskaźnikami i referencjami, a także przekazywanie i zwracanie referencji do / z funkcji.
=> Zobacz tutaj, aby poznać pełną listę samouczków języka C ++.
Czego się nauczysz:
- Co to jest odniesienie?
- Deklarowanie zmiennych referencyjnych
- Wskaźniki odniesienia do punktów odniesienia
- Przekazywanie odwołań do funkcji
- Powracające referencje
- Wniosek
- rekomendowane lektury
Co to jest odniesienie?
Odniesienie to alias lub inna nazwa zmiennej. Mając zmienną z identyfikatorem, możemy podać inny identyfikator tej zmiennej, abyśmy mogli odwołać się do tej zmiennej za pomocą jej oryginalnej lub innej nazwy. Ta „inna nazwa” jest nazywana odniesieniem.
Rozważmy, że mamy zmienną „i” o wartości 17. Jeśli j jest odniesieniem, to reprezentacja pamięci zmiennej i i odniesienia j jest pokazana poniżej.
Jak pokazano na powyższym rysunku, zmienna i jej alias, czyli odniesienie do tej samej wartości.
Deklarowanie zmiennych referencyjnych
Odniesienie można zadeklarować za pomocą operatora „&”.
Deklarację odniesienia przedstawiono poniżej.
int a = 10; int& refvar = a;
Tak więc w powyższym kodzie zadeklarowaliśmy zmienną całkowitą o wartości 10. Następnie deklarujemy inną zmienną refvar i przypisujemy do niej zmienną. Zauważ, że deklarując refvar, użyliśmy operatora & tuż przed nazwą zmiennej. Oznacza to, że refvar jest odniesieniem do już istniejącej zmiennej.
Możemy odwołać się do zmiennej „a”, używając nazwy zmiennej a lub nazwy odniesienia „refvar”.
najlepsze aplikacje szpiegowskie na telefony dla Androida
Poniżej podano prosty przykład odniesień:
#include #include using namespace std; int main() { int age = 22; int& numYears = age; double salary = 10000.00; double& wages = salary; cout<<'Age: '< Wynik:
Wiek: 22 lata
Liczba lat: 22
Wynagrodzenie: 10000
Płace: 10000
W powyższym kodzie mamy zmienną typu integer age. Następnie deklarujemy referencyjną zmienną całkowitą numYears jako zmienną age. Mamy kolejną zmienną pensję typu double. Następnie deklarujemy podwójne odniesienie wynagrodzenia zmiennego do wynagrodzenia zmiennego.
Następnie drukujemy zmienne, najpierw wiek, potem numer referencyjny, a po nim wynagrodzenie i odniesienie. Jeśli sprawdzimy wynik programu, rozumiemy, że zmienna i odniesienie do niej wskazuje na tę samą wartość, a zatem Wiek i liczba lat, a także pensja i płace mają te same wartości.
Wskaźniki odniesienia do punktów odniesienia
W porównaniu do wskaźników referencje są bezpieczniejsze i łatwiejsze w użyciu.
przekonwertować youtube na mp3 darmowy sejf
Omówimy kilka różnic między wskaźnikami a referencjami:
- W przeciwieństwie do wskaźników odwołania nie mogą mieć wartości null. W przypadku odwołań obowiązkowe jest przypisanie wartości.
- Referencje są inicjowane w momencie ich utworzenia. W przeciwieństwie do tego wskaźniki można zainicjować w dowolnym momencie i niekoniecznie podczas deklaracji.
- Wskaźniki można łatwo przypisać do wartości. Ale w przypadku referencji nie możemy tego zrobić. Po przypisaniu wartości zmiennej, tj. Po utworzeniu aliasu zmiennej, nie możemy przypisać innej zmiennej do tego odwołania.
- Nie mamy nieważnych referencji. Z definicji odwołanie jest aliasem dla zmiennej i jest inicjowane podczas samego tworzenia. W związku z tym nie ma szans, że będziemy mieć odwołanie void i później przypisać do niej zmienną z konkretnym typem danych. W przeciwieństwie do tego możemy mieć wskaźniki pustki.
Z powodu omówionych powyżej ograniczeń odwołań w C ++ nie można używać ze strukturami danych, takimi jak lista połączona. Należy pamiętać, że w Javie nie mamy wszystkich tych ograniczeń ani ograniczeń dotyczących odniesień.
Przekazywanie odwołań do funkcji
W naszych poprzednich samouczkach dotyczących funkcji omówiliśmy już technikę parametru „przekazywanie przez odniesienie” i widzieliśmy przykład zamiany dwóch liczb przy użyciu tej techniki. Pomijamy wyjaśnienie tej techniki w tej sekcji i ponownie przedstawiamy funkcję zamiany jako przykład.
Ale tym razem zamiast zamiany liczb zamienimy dwa łańcuchy.
#include #include using namespace std; void swap(char * &str1, char * &str2) { char *temp = str1; str1 = str2; str2 = temp; } int main() { char *str1 = 'references'; char *str2 = 'pointers'; cout<<'str1 = '< Wynik:
słowo1 = odniesienia słowo2 = wskaźniki
Po zamianie….
słowo1 = wskaźniki słowo2 = referencje
Więc w tym programie przekazujemy ciągi znaków (char *) do funkcji swap. Parametry formalne to dwa odwołania do zmiennej typu char *. Zauważmy, że gdy dwie wartości są zamieniane, ich modyfikacja jest odzwierciedlana w funkcji wywołującej, ponieważ używamy referencji / aliasów dla parametrów.
Powracające referencje
Podobnie jak zwracanie wskaźników z funkcji, możemy również zwracać odwołania z funkcji. Zwracanie referencji z funkcji również zwraca niejawny wskaźnik do zwracanej wartości. Z tego powodu funkcja zwracająca odwołanie może być używana po lewej stronie przypisania.
Weźmy przykład zwracania referencji z funkcji.
#include using namespace std; int myarray() = {1, 0, 2, 3, 5}; int& setValues( int i ) //returns reference to the array { return myarray(i); } int main () { cout << 'myarray before change' << endl; for ( int i = 0; i < 5; i++ ) { cout << 'myarray(' << i << ') = '; cout << myarray(i) << endl; } setValues(1) = 1; setValues(3) = 8; cout << 'Value after change' << endl; for (int i = 0; i < 5; i++ ) { cout<< 'myarray(' << i << ') = '; cout << myarray(i) << endl; } return 0; }
Wynik:
myarray przed zmianą
myarray (0) = 1
myarray (1) = 0
myarray (2) = 2
myarray (3) = 3
myarray (4) = 5
Wartość po zmianie
myarray (0) = 1
myarray (1) = 1
myarray (2) = 2
myarray (3) = 8
myarray (4) = 5
Zrzut ekranu tego samego pokazano poniżej:

Jak widać w powyższym kodzie, definiujemy funkcję setValues, która zwraca referencję i parametr będący liczbą całkowitą. Wewnątrz funkcji po prostu zwracamy odwołanie do tablicy do pozycji I w C ++.
W funkcji main wypisujemy wartości tablicy. Następnie za pomocą funkcji setValues zmieniamy wartości dwóch elementów tablicy. Ponownie wypisujemy wartość tablicy.
Jedną rzeczą, na którą musimy zwrócić uwagę w przypadku odwołań, jest to, że możemy mieć funkcję zwracającą odwołanie tylko wtedy, gdy dane są statyczne lub globalne. Zwracanie odniesienia do zmiennej lokalnej w C ++ jest nielegalne.
Wniosek
Czytelnicy powinni pamiętać, że głównym zastosowaniem odniesień jest przekazywanie parametrów do funkcji.
W nadchodzących samouczkach omówimy funkcje / wyrażenia lambda w C ++, zanim przejdziemy do programowania obiektowego w C ++.
=> Sprawdź najlepsze samouczki szkoleniowe C ++ tutaj.
rekomendowane lektury
- Najlepsza DARMOWA seria samouczków języka C #: najlepszy przewodnik po języku C # dla początkujących
- Wskaźniki i operacje na wskaźnikach w C ++
- Testowanie obciążenia za pomocą samouczków HP LoadRunner
- Zmienne w C ++
- Programowanie obiektowe w C ++
- Samouczek potoków w systemie Unix: Potoki w programowaniu w systemie Unix
- Funkcje biblioteczne w C ++
- 70+ NAJLEPSZYCH samouczków C ++ do nauki programowania w C ++ ZA DARMO