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: C# beginners :- Assembly , EXE and DLL 2024, Listopad
Anonim

Wskaźnik a tablica

Wskaźnik to typ danych, który przechowuje odniesienie do lokalizacji w pamięci (tj. zmienna wskaźnikowa przechowuje adres lokalizacji w pamięci, w której 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 do łatwego deklarowania tablic i uzyskiwania 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 lokalizacji w pamięci. Dostęp do danych przechowywanych w lokalizacji pamięci, do której odwołuje się wskaźnik, nazywa się dereferencją. Podczas wykonywania powtarzalnych operacji, takich jak przechodzenie przez drzewa/ciągi, przeglądanie 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. Pusty wskaźnik to wskaźnik, który niczego nie wskazuje. W Javie dostęp do wskaźnika zerowego generowałby wyjątek o nazwie 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 wygląd tablicy w pamięci.

wartości int[5];

values[0]=100;

wartości[1]=101;

wartości[2]=102;

values[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 swoją własne miejsce w tablicy. Po zdefiniowaniu tablicy jej rozmiar jest ustalony. Więc jeśli nie masz pewności co do rozmiaru tablicy w czasie kompilacji, musisz zdefiniować wystarczająco dużą tablicę, aby była po bezpiecznej stronie. Ale w większości przypadków będziemy używać mniej elementów niż przydzieliliśmy. Tak więc znaczna ilość pamięci jest faktycznie marnowana. Z drugiej strony, jeśli „wystarczająco duża tablica” nie jest wystarczająco duża, program się zawiesi.

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 tablic odbywa się za pomocą arytmetyki wskaźników (tj. i-ty element tablicy x byłby równoważny (x+i)). Dlatego w C zestaw wskaźników, które wskazują na zestaw kolejnych lokalizacji w pamięci, można traktować jako tablicę. Ponadto istnieje różnica w sposobie, w jaki operator sizeof działa na wskaźnikach i tablicach. Po zastosowaniu do tablicy operator sizeof zwróci cały rozmiar tablicy, podczas gdy zastosowany do wskaźnika zwróci tylko rozmiar wskaźnika.

Zalecana: