Rozdíl mezi polem a ukazatelem

Autor: Laura McKinney
Datum Vytvoření: 1 Duben 2021
Datum Aktualizace: 8 Smět 2024
Anonim
Rozdíl mezi polem a ukazatelem - Technologie
Rozdíl mezi polem a ukazatelem - Technologie

Obsah


Mezi polem a ukazatelem existuje úzký vztah. Ukazatel lze použít k přístupu k prvkům pole, přístup k celému poli pomocí aritmetiky ukazatele zrychluje přístup. Mezi ukazatelem a maticí je základní rozdíl, tj. Pole je kolekce proměnných podobného datového typu, zatímco ukazatel je proměnná, která ukládá adresu jiné proměnné. Existuje několik dalších rozdílů mezi maticí a ukazatelem, které jsou popsány níže v srovnávací tabulce.

  1. Srovnávací tabulka
  2. Definice
  3. Klíčové rozdíly
  4. Závěr

Srovnávací tabulka

Základ pro srovnáníPoleUkazatel
Prohlášení// V C ++
zadejte var_name;
// V Javě.
typ var-name;
var_name = nový typ;
// V C ++
napište * var_name;
PracovníUkládá hodnotu proměnné homogenního datového typu.Uložte adresu jiné proměnné stejného datového typu jako datový typ proměnné ukazatele.
GeneraceLze vygenerovat řadu ukazatelů.Lze vygenerovat ukazatel na pole.
Podpora JavaPodporujte koncept pole.Nepodporuje ukazatele.
Úložný prostorNormální pole ukládá hodnoty proměnné a pole ukazatele ukládá adresu proměnných.Ukazatele jsou speciálně navrženy pro ukládání adresy proměnných.
KapacitaPole může uložit počet prvků uvedených ve velikosti proměnné pole. Ukazatel proměnné může ukládat adresu pouze jedné proměnné najednou.


Definice pole

Pole je kolekce prvků stejného datového typu a všechny tyto prvky jsou označovány běžným názvem, kterým je název proměnné pole. K určitému prvku pole lze přistupovat přístupem ke specifickému indexu toho pole, kde je tento prvek uložen. Pole může být jednorozměrné pole, dvourozměrné pole nebo vícerozměrné pole. Může být také generováno pole ukazatelů, tj. Pole obsahující všechny proměnné jako ukazatelové proměnné. V „C ++“ jsou pole přiřazena staticky, zatímco v „Java“ jsou pole dynamicky přidělena.

// V C ++ zadejte var_name; // V Javě. typ var-name; var_name = nový typ;

Zde „typ“ označuje datový typ proměnné pole, „var_name“ označuje jméno dané proměnné pole, „velikost“ označuje kapacitu proměnné pole, tj. Kolik prvků „typu“ lze uložit do této proměnné pole . Existují dva způsoby přístupu k matici, první „aritmetika ukazatele“ a druhá „indexování pole“, z nichž „aritmetika ukazatele“ je rychlejší.


// přístup pomocí aritmetického ukazatele Void display_array (int * S) {while (* s) {cout (<< "hodnota je" << * s); * s ++; }}

Použití „aritmetiky ukazatele“ by fungovalo rychleji ve srovnání s „indexováním pole“, tj. Přístup k proměnné pole pomocí jejího indexu. Pokud potřebujete předat pole ukazatelů do funkce, lze to provést pomocí stejné metody, jakou používáte k předávání normálního pole, tj. Přímo volat funkci s názvem pole, bez indexu.

Rozumíme tomu s příkladem

// Deklarování pole ukazatelů. int * p;

Zde ukazuje, že „p“ je pole typu celočíselného typu, bude držet adresu 10 proměnných typu celočíselného typu. Předejme výše uvedené pole ukazatelů na funkční displej ().

displej (p); // Vyvolání zobrazení funkce. void display (int * d) {// Funkce přijímající pole ukazatelů. pro (int i = 0; i <10; i ++) {cout << ("index" <

Tato funkce postupně zobrazí hodnoty přítomné v proměnných, jejichž adresy jsou uloženy v tomto poli ukazatelů.

Definice ukazatele

Ukazatel je proměnná, která drží adresu paměti jiné proměnné. Datový typ proměnné ukazatele a proměnné, jejichž adresa je přiřazena k proměnné ukazatele, musí být stejný. Proměnná ukazatele je deklarována jako následující.

// Prohlášení v C ++ typu * name;

Zde je „typ“ datový typ, „jméno“ je název proměnné ukazatele. Typ určuje, jakou adresu proměnné lze uložit do proměnné ukazatele. Například ukazatel celé číslo uloží adresu proměnné integer. Existují dva operátory ukazatelů „*“ a „&“. Operátor „*“ vrátí hodnotu umístěnou na adrese, která je uložena v proměnné následované znakem „*“. Operátor „&“ vrátí adresu proměnné následovanou znaménkem „&“.

// například int b = 10 int a = & b; // Zde je adresa b uložena v proměnné a. // nechá adresu b je 2000, takže nyní a = 2000. int c = * a; // Zde proměnná celočíselného ukazatele * a vrátí hodnotu, která je umístěna na adrese uložené v souboru .ie. c = 10.

Na ukazatelích, tj. Sčítání a odčítání, můžete použít pouze dva aritmetické operátory. Pokud použijete přírůstek na proměnnou celočíselného ukazatele, zvýší se o velikost datového typu, tj. O 2 byty, protože se jedná o celé číslo, na přírůstek bude muset ukazovat na další celočíselnou proměnnou. Totéž platí pro dekrement.

// p je celé číslo obsahující hodnotu 2000. p ++; // nyní p = 2002. p--; // nyní p opět obsahuje 2000, jak bylo sníženo o dva bajty.

  1. Pole ukládá proměnné podobných datových typů a datové typy proměnných se musí shodovat s typem pole. Na druhé straně proměnná ukazatele ukládá adresu proměnné typu podobného typu proměnné ukazatele.
  2. Můžeme vygenerovat pole ukazatelů, tj. Pole, jehož proměnné jsou proměnné ukazatele. Na druhé straně můžeme vytvořit ukazatel, který ukazuje na pole.
  3. Java podporuje pole, ale nepodporuje ukazatele.
  4. Velikost pole určuje počet proměnných, které lze uložit, zatímco; Ukazatel proměnné může uložit adresu pouze proměnné

Poznámka:

Java nepodporuje ukazatele ani se jim přísně vyhýbá.

Závěr:

Když potřebujeme pracovat na datových prvcích podobného datového typu, pak místo samostatné práce na proměnných můžeme vytvořit řadu těchto proměnných podobných datových typů a pak s nimi pracovat. Ukazatelé jsou pro nějaký program nezbytní, dává obrovskou sílu, ale bohužel, pokud ukazatel obsahuje nesprávnou hodnotu, bude nejobtížnější najít chybu.