Odnośniki

Typ odnośnikowy i odnośniki

W przeciwieństwie do nazw, odnośniki w trakcie kompilacji nie znikają. W skompilowanym programie odnośniki pozostają obiektami, które pokazują na inne obiekty.

Interpretacja typów odnośnikowych

Referencje

Wskaźniki

Zastosowania odnośników

Odnośników używa się

Ponadto wskaźniki umożliwiają:

Wiązane struktury danych

Odnośniki umożliwiają łatwe tworzenie list

Wiązane struktury danych

Listy zrealizowane na bazie odnośników pozwalają na tanie dodawanie i usuwanie elementów

Wiązane struktury danych

Listy zrealizowane na bazie odnośników pozwalają na tanie dodawanie i usuwanie elementów

Wiązane struktury danych

Odnośniki umożliwiają łatwe tworzenie drzew

Arytmetyka wskaźników

Różnice między wskaźnikami, a referencjami

Referencja Wskaźnik
Zalety
  • nie wymaga operatora wyłuskania
  • nie grozi zapisaniem niewłaściwego miejsca w pamięci
  • umożliwia arytmetykę wskaźników
  • pozwala na wskazywanie na dowolne miejsce w pamięci
Wady
  • nie umożliwia arytmetyki wskaźników
  • nie pozwala na wskazywanie na dowolne miejsce w pamięci
  • wymaga operatora wyłuskania
  • grozi zapisaniem niewłaściwego miejsca w pamięci

Wskaźniki w miejsce referencji

Wskaźniki można wykorzystywać tam, gdzie używane są referencje, jednak lepiej tego nie robić, bo:

Wskaźniki należy stosować tylko wtedy gdy jest to absolutnie konieczne do osiągnięcia wysokiej wydajności kodu, bo używanie wskaźników grozi wygenerowaniem trudnych do zlokalizowania błędów.

Typy referencyjne

Typy referencyjne: spojrzenie nisko- i wysokopoziomowe

Wartość null

Porównanie interpretacji typów odnośnikowych w C++, C# i Javie

Podstawowe sytuacje, w których występują różnice w iterpretacji odnośników zebrane są w poniższej tabeli.
Wsk. Wsk. Typ ref. Typ ref. Ref.
Język C++ C# Java C# C++
inicjalizacja B B B B B
= B B B B D
==, != B B B D D
<, >, <=, >= B B - D D
+,-,++,-- B B - (D dla + w String) D D
. - - D D D
-> D D - - -

B - interpretacja bliska, D - interpretecja daleka