Różnica między wskaźnikiem a odniesieniem

Kluczowa różnica - wskaźnik vs odniesienie
 

Zanim omówimy różnicę między wskaźnikiem a odniesieniem, przyjrzyjmy się krótko znaczeniu tych dwóch terminów. W programie dane zajmują pamięć. Dokładna lokalizacja pamięci, w której dane zostały umieszczone w czasie wykonywania, powinna być znana, aby uzyskać do nich dostęp. Zmienne wskaźnikowe i zmienne odniesienia służą do uzyskiwania dostępu do tych danych i manipulowania adresami pamięci, pod którymi się znajdują. Oznacza to, że zarówno wskaźniki, jak i odniesienia mogą być używane do pośredniego odniesienia do obiektów. Zasadniczo przechowują adresy pamięci jako swoje wartości. The kluczowa różnica między wskaźnikiem a odniesieniem jest to wskaźnik jest zmienną, która przechowuje adres lokalizacji pamięci innej zmiennej podczas referencja jest zmienną, która odnosi się do innej zmiennej. Dwa mechanizmy, wskaźnik i odwołania, mają inną składnię i użycie.

Co to jest wskaźnik?

Wskaźnik jest obiekt języka programowania, który przechowuje adres pamięci wartości w pamięci komputera.

W składni C ++;

int i = 5;

int * ptr = & i;

Pierwszy wiersz definiuje zmienną zainicjowaną wartością 5. Drugi wiersz definiuje wskaźnik do adresu pamięci zmiennej. Tutaj „ptr” jest zadeklarowany jako obiekt typu „wskaźnik do int”, którego początkową wartością jest adres obiektu i. Zasadniczo zmienna ptr wskazuje na i, przechowując jej adres pamięci.

Nazywane jest uzyskiwanie wartości przechowywanej w miejscu pamięci dereferencje. Operator * służy do wyłuskiwania wskaźnika. Po zakończeniu deklaracji wyrażenie pośrednie * ptr dereferencje ptr w odniesieniu do i.

Aby zmienić wartość i, można użyć następującego przypisania;

* ptr = 20;

Wskaźniki mogą zostać ponownie przypisane, aby odnosiły się również do różnych obiektów.

ZA wskaźnik zerowy to specjalny rodzaj wskaźnika. Wskaźnik zerowy jest często oznaczany przez 0 lub null i wskazuje na nic. Dobrą praktyką jest używanie wskaźnika zerowego w przypadku braku dokładnego adresu do przypisania do wskaźnika. Tego przypisania można użyć w logicznych operacjach i warunkach.

Wskaźniki mogą być służy do przechowywania i zarządzania adresami dynamicznie alokowanej pamięci. Wdrażanie i kontrolowanie struktur danych, takich jak stosy, kolejki i listy, można usprawnić za pomocą wskaźników. Na przykład kolejka może mieć dwa wskaźniki; wskaźnik głowy i wskaźnik ogona. Wskaźniki mogą być również używane do przekazywania zmiennych według ich adresu, co pozwoliłoby na zmianę wartości. Bezpośrednie manipulowanie pamięcią lub urządzeniami zamapowanymi w pamięci może być również obsługiwane za pomocą wskaźników.

Wskaźniki umożliwiają zarówno chroniony, jak i niezabezpieczony dostęp do adresowanej pamięci. Dlatego należy podjąć niezbędne środki ostrożności, aby sprawdzić, czy zawartość wskaźnika jest prawidłowa. W przeciwnym razie odwołanie wskaźnika do niepoprawnego adresu pamięci może spowodować awarię programu.

Wskaźniki są obsługiwane w językach takich jak C, C ++, Pascal i wielu językach asemblera.

Wskaźnik za wskazujący na adres pamięci związany ze zmienną b.

Co to jest odniesienie?

Odniesieniem jest po prostu alternatywny identyfikator wartości przechowywanej w pamięci. Umożliwia programowi pośredni dostęp do określonej bazy danych.

W składni C ++;

int i = 5;

int & ref = ja;

Pierwszy wiersz definiuje zmienną zainicjowaną wartością 5. Drugi wiersz deklaruje „ref” jako obiekt typu „odwołanie do int”, który odnosi się do i. Odwołanie różni się od samych danych, ponieważ odniesienie jest realizowane jako fizyczny adres konkretnej bazy danych przechowywanej w pamięci.

Raz zdefiniowanego odwołania nie można przypisać nowej wartości. Odwołanie zawsze odnosi się do obiektu, z którym jest inicjowane. W poniższym przypisaniu ref nadal odnosi się do i, ale wartość wynosi teraz 20.

ref = 20;

Zgodnie z powyższym przykładem odwołania do dereferencji nie wymagają żadnych operatorów.

Odniesień można użyć, gdy zmienna zawsze odnosi się do obiektu. Wynika to z faktu, że w przeciwieństwie do wskaźników, referencje nie mogą mieć wartości zerowej i zawsze muszą być przypisywane przy inicjalizacji. Ponieważ odwołania zawsze muszą odnosić się do jakiegoś obiektu, utworzenie takiej zmiennej jako odniesienia gwarantuje, że program będzie działał wydajnie i poprawnie. Biorąc pod uwagę, że nie ma żadnych referencji zerowych, ważność zmiennej referencyjnej nie musi być testowana.

Zmienne odniesienia mogą być służy do skutecznego przekazywania dużych danych jako argumentów do procedur. Odniesienia są również używane do udostępniania dużych danych między różnymi obszarami kodu, ponieważ każdy kod zachowuje odniesienie do danych.

Języki programowania, takie jak C ++, Java, Python, Perl, PHP, Ruby itp., Obsługują odniesienia.

Jaka jest różnica między wskaźnikiem a odniesieniem?

Definicja wskaźnika i odniesienia

Wskaźnik: Wskaźnik to adres pamięci obiektu przechowywanego w pamięci komputera.

Odniesienie: Odwołanie jest alternatywnym identyfikatorem lub aliasem obiektu.

Charakterystyka wskaźnika i odniesienia

Deklaracja

Wskaźnik: Wskaźnik jest deklarowany za pomocą operatora *.

Odniesienie: Referencja jest deklarowana przez operatora &.

Dereferencje

Wskaźnik: Zmienna wskaźnikowa wymaga odłożenia operatora *.

Odniesienie: Zmienna referencyjna nie wymaga od operatora żadnego odniesienia.

Inicjowanie

Wskaźnik:  Wskaźniki mogą być inicjowane na zero. Takie zmienne nazywane są wskaźnikami zerowymi.

Odniesienie: Odniesień nie można zainicjować na wartość NULL. Nie ma czegoś takiego jak odwołanie zerowe. Odwołanie musi zawsze odnosić się do obiektu.

Przeniesienia

Wskaźnik: Zmienna wskaźnikowa może zostać ponownie przypisana w celu odniesienia do różnych obiektów.

Odniesienie: Zmiennej odniesienia nie można przypisać ponownie. Zawsze odnosi się do obiektu, z którym został zainicjowany.

Stosowanie

Wskaźnik: Zmiennych wskaźnikowych należy używać, gdy istnieje możliwość odwołania się do niczego lub gdy wymagane jest odniesienie się do różnych rzeczy w różnych momentach.

Odniesienie: Zmiennych referencyjnych należy używać, gdy zawsze będzie obiekt, do którego można się odwoływać, i gdy nie jest wymagane używanie tej zmiennej referencyjnej do odwoływania się do czegokolwiek innego niż ten obiekt.

Zastosowanie użytkowania

Wskaźnik: Zmienne wskaźnikowe mogą być używane do implementacji algorytmów i struktur danych.

Odniesienie: Zmienne odniesienia mogą być używane w parametrach funkcji, a typy zwracane definiują użyteczne interfejsy.

Używane języki:

Wskaźnik: Języki programowania, takie jak C, C ++, Pascal i wiele języków asemblera, obsługują wskaźniki.

Odniesienie: Języki programowania, takie jak C ++, Java, Python, Perl, PHP, Ruby itp., Obsługują odniesienia.

Zdjęcie dzięki uprzejmości: „Wskaźniki” autorstwa Ten plik został utworzony przez użytkownika: SvenTranslation.Own work. Ten obraz wektorowy został utworzony za pomocą programu Inkscape. (CC BY-SA 3.0) przez Commons -