Różnica między tablicą a wskaźnikiem

Autor: Laura McKinney
Data Utworzenia: 1 Kwiecień 2021
Data Aktualizacji: 15 Móc 2024
Anonim
Różnica między tablicą a wskaźnikiem - Technologia
Różnica między tablicą a wskaźnikiem - Technologia

Zawartość


Istnieje ścisły związek między tablicą a wskaźnikiem. Wskaźnik może być używany do uzyskiwania dostępu do elementów tablicy, dostęp do całej tablicy za pomocą arytmetyki wskaźnika, przyspiesza dostęp. Podstawowa różnica między wskaźnikiem a tablicą polega na tym, że tablica jest zbiorem zmiennych o podobnym typie danych, podczas gdy wskaźnik jest zmienną, która przechowuje adres innej zmiennej. Istnieją inne różnice między tablicą a wskaźnikiem, które omówiono poniżej w tabeli porównawczej.

  1. Wykres porównania
  2. Definicja
  3. Kluczowe różnice
  4. Wniosek

Wykres porównania

Podstawa do porównaniaSzykWskaźnik
Deklaracja// W C ++
wpisz var_name;
// W Javie.
wpisz var-name;
var_name = nowy typ;
// W C ++
wpisz * var_name;
PracującyPrzechowuje wartość zmiennej o jednorodnym typie danych.Zapisz adres innej zmiennej o tym samym typie danych, co typ danych zmiennych wskaźnikowych.
GeneracjaMożna wygenerować tablicę wskaźników.Można wygenerować wskaźnik do tablicy.
Wsparcie JavaObsługuje koncepcję macierzy.Nie obsługuje wskaźników.
PrzechowywanieNormalna tablica przechowuje wartości zmiennych, a tablica wskaźników przechowuje adres zmiennych.Wskaźniki są specjalnie zaprojektowane do przechowywania adresu zmiennych.
PojemnośćTablica może przechowywać liczbę elementów wymienionych w wielkości zmiennej tablicowej. Zmienna wskaźnikowa może przechowywać adres tylko jednej zmiennej na raz.


Definicja tablicy

Tablica jest zbiorem elementów tego samego typu danych, a wszystkie te elementy są nazywane wspólną nazwą, która jest nazwą zmiennej tablicowej. Dostęp do określonego elementu tablicy można uzyskać, uzyskując dostęp do określonego indeksu tej tablicy, w której ten element jest przechowywany. Tablice mogą być tablicą jednowymiarową, tablicą dwuwymiarową lub tablicą wielowymiarową. Można również wygenerować tablicę wskaźników, tj. Tablicę zawierającą wszystkie zmienne jako zmienne wskaźnikowe. W „C ++” tablice są przydzielane statycznie, natomiast w „Javie” tablice są przydzielane dynamicznie.

// W C ++ wpisz var_name; // W Javie. wpisz var-name; var_name = nowy typ;

Tutaj „typ” oznacza typ danych zmiennej tablicowej, „var_name” oznacza nazwę nadaną zmiennej tablicowej, „size” oznacza pojemność zmiennej tablicowej, tj. Ile elementów „type” może być przechowywanych w tej zmiennej tablicowej . Istnieją dwie metody dostępu do tablicy, pierwsza „arytmetyka wskaźnika” i druga „indeksowanie tablicy”, z których „arytmetyka wskaźnika” jest szybsza.


// uzyskiwanie dostępu za pomocą arytmetyki wskaźnika Void display_array (int * S) {while (* s) {cout (<< ”wartość to„ << * s); * s ++; }}

Używanie „arytmetyki wskaźnika” działałoby szybciej w porównaniu z „indeksowaniem macierzy”, tj. Uzyskiwanie dostępu do zmiennej tablicowej za pomocą jej indeksu. Jeśli potrzebujesz przekazać tablicę wskaźników do funkcji, możesz to zrobić przy użyciu tej samej metody, której używasz do przekazania normalnej tablicy, tj. Bezpośrednio wywołaj funkcję z nazwą tablicy, bez żadnego indeksu.

Pozwól nam to zrozumieć na przykładzie

// Deklaracja tablicy wskaźników. int * p;

Tutaj pokazuje, że „p” jest tablicą typu liczb całkowitych, będzie przechowywać adres 10 zmiennych typu liczb całkowitych. Przekażmy powyższą tablicę wskaźników do funkcji display ().

wyświetlacz (p); // Wywołaj ekran funkcji. void display (int * d) {// Funkcja odbierająca tablicę wskaźników. for (int i = 0; i <10; i ++) {cout << ("index" <

Ta funkcja wyświetla wartości obecne w zmiennych, których adresy są przechowywane w tej tablicy wskaźników sekwencyjnie.

Definicja wskaźnika

Wskaźnik jest zmienną, która przechowuje adres pamięci innej zmiennej. Typ danych zarówno zmiennej wskaźnikowej, jak i zmiennej, której adres jest przypisany do zmiennej wskaźnikowej, musi być taki sam. Zmienna wskaźnika jest zadeklarowana w następujący sposób.

// Deklaracja w typie C ++ * name;

Tutaj „typ” jest typem danych, „nazwa” to nazwa zmiennej wskaźnikowej. „Typ” określa, jakiego rodzaju adres zmiennej może być przechowywany w zmiennej wskaźnikowej. Na przykład wskaźnik liczb całkowitych zapisze adres zmiennej całkowitej. Istnieją dwa operatory wskaźnika „*” i „&”. Operator „*” zwraca wartość znajdującą się pod adresem, która jest przechowywana w zmiennej, po której następuje znak „*”. Operator „&” zwraca adres zmiennej, po której następuje znak „&”.

// na przykład int b = 10 int a = & b; // Tutaj adres b jest przechowywany w zmiennej a. // pozwala adresowi b jest 2000, więc teraz a = 2000. int c = * a; // Tutaj zmienna wskaźnika liczb całkowitych * a zwróci wartość, która znajduje się pod adresem zapisanym w .ie. c = 10.

Istnieją tylko dwa operatory arytmetyczne, których można używać w odniesieniu do wskaźników, tj. Dodawania i odejmowania. Jeśli zastosujesz przyrost do zmiennej wskaźnikowej liczby całkowitej, zostanie on zwiększony o rozmiar typu danych, tj. O 2 bajty, ponieważ jest to wskaźnik liczby całkowitej, przy przyrostu będzie musiał wskazać następną zmienną całkowitą. To samo dotyczy dekrementacji.

// p jest wskaźnikiem liczb całkowitych o wartości 2000. p ++; // teraz p = 2002. p--; // teraz p ponownie zawiera 2000, pomniejszone o dwa bajty.

  1. Tablica przechowuje zmienne podobnych typów danych, a typy danych zmiennych muszą być zgodne z typem tablicy. Z drugiej strony zmienna wskaźnikowa przechowuje adres zmiennej typu podobnego do typu typu zmiennej wskaźnikowej.
  2. Możemy wygenerować tablicę wskaźników, tj. Tablicę, której zmienne są zmiennymi wskaźnikowymi. Z drugiej strony możemy stworzyć wskaźnik, który wskazuje na tablicę.
  3. Java obsługuje tablicę, ale nie obsługuje wskaźników.
  4. Rozmiar tablicy decyduje o liczbie zmiennych, które może przechowywać; zmienna wskaźnikowa może przechowywać adres tylko zmiennej

Uwaga:

Java nie obsługuje wskaźników ani nie unika ich.

Wniosek:

Kiedy musimy pracować nad elementami danych o podobnym typie danych, zamiast pracować osobno nad zmiennymi, możemy utworzyć tablicę tych zmiennych o podobnych typach danych, a następnie działać na nich. Wskaźniki są niezbędne dla niektórych programów, daje ogromną moc, ale niestety, jeśli wskaźnik zawiera niepoprawną wartość, będzie to najtrudniejszy błąd do znalezienia.