Różnica Między Wskaźnikiem A Tablicą

Różnica Między Wskaźnikiem A Tablicą
Różnica Między Wskaźnikiem A Tablicą

Wideo: Różnica Między Wskaźnikiem A Tablicą

Wideo: Różnica Między Wskaźnikiem A Tablicą
Wideo: Lekcja 31. Tablica a wskaźnik. 2024, Może
Anonim

Wskaźnik vs tablica

Wskaźnik to typ danych, który zawiera odniesienie do miejsca w pamięci (tj. Zmienna wskaźnikowa przechowuje adres miejsca w pamięci, w którym przechowywane są niektóre dane). Tablice są najczęściej używaną strukturą danych do przechowywania kolekcji elementów. Większość języków programowania udostępnia metody umożliwiające łatwe deklarowanie tablic i uzyskiwanie dostępu do elementów w tablicach.

Co to jest wskaźnik?

Wskaźnik to typ danych, który przechowuje adres lokalizacji pamięci, w której przechowywane są niektóre dane. Innymi słowy, wskaźnik zawiera odniesienie do miejsca w pamięci. Dostęp do danych przechowywanych w lokalizacji pamięci, do której odwołuje się wskaźnik, nazywamy wyłuskiwaniem. Podczas wykonywania powtarzalnych operacji, takich jak przechodzenie po drzewach / łańcuchach, przeszukiwanie tabel itp., Użycie wskaźników poprawiłoby wydajność. Dzieje się tak, ponieważ wyłuskiwanie i kopiowanie wskaźników jest tańsze niż faktyczne kopiowanie i uzyskiwanie dostępu do danych wskazywanych przez wskaźniki. Wskaźnik pusty to wskaźnik, który na nic nie wskazuje. W Javie dostęp do pustego wskaźnika wygenerowałby wyjątek zwany NullPointerException.

Co to jest tablica?

Na rysunku 1 pokazano fragment kodu zwykle używany do deklarowania i przypisywania wartości do tablicy. Rysunek 2 przedstawia, jak tablica wyglądałaby w pamięci.

wartości [0] = 100;

wartości [1] = 101;

wartości [2] = 102;

wartości [3] = 103;

wartości [4] = 104;

Rysunek 1: Kod do deklarowania i przypisywania wartości do tablicy

100 101 102 103 104 Indeks: 0 1 2 3 4

Rysunek 2: Tablica przechowywana w pamięci

Powyższy kod definiuje tablicę, która może przechowywać 5 liczb całkowitych i są one dostępne za pomocą indeksów od 0 do 4. Jedną z ważnych właściwości tablicy jest to, że cała tablica jest alokowana jako pojedynczy blok pamięci, a każdy element otrzymuje własną przestrzeń w tablicy. Po zdefiniowaniu tablicy jej rozmiar jest ustalany. Więc jeśli nie masz pewności co do rozmiaru tablicy w czasie kompilacji, musisz zdefiniować wystarczająco dużą tablicę, aby była bezpieczna. Ale w większości przypadków będziemy używać mniejszej liczby elementów niż przydzieliliśmy. Tak więc znaczna ilość pamięci jest marnowana. Z drugiej strony, jeśli „wystarczająco duża tablica” nie jest w rzeczywistości wystarczająco duża, program ulegnie awarii.

Jaka jest różnica między wskaźnikami a tablicami?

Wskaźnik to typ danych, który przechowuje adres lokalizacji pamięci, w której przechowywane są niektóre dane, podczas gdy tablice są najczęściej używaną strukturą danych do przechowywania kolekcji elementów. W języku programowania C indeksowanie tablicy odbywa się za pomocą arytmetyki wskaźnikowej (tj. I-ty element tablicy x byłby równoważny * (x + i)). Dlatego w C zbiór wskaźników wskazujących na zbiór kolejnych lokalizacji pamięci może być traktowany jako tablica. Ponadto istnieje różnica w działaniu operatora sizeof na wskaźnikach i tablicach. Operator sizeof zastosowany do tablicy zwróci cały rozmiar tablicy, podczas gdy zastosowany do wskaźnika zwróci tylko rozmiar wskaźnika.

Zalecane: