Rozdiel medzi poľom a ukazovateľom

Autor: Laura McKinney
Dátum Stvorenia: 1 Apríl 2021
Dátum Aktualizácie: 14 Smieť 2024
Anonim
TOP 4 chyby. Čo robiť, ak námraza na tortu praskne a Popsicles praskne + recept.
Video: TOP 4 chyby. Čo robiť, ak námraza na tortu praskne a Popsicles praskne + recept.

Obsah


Medzi poľom a ukazovateľom existuje úzka väzba. Ukazovateľ môže byť použitý na prístup k prvkom poľa, prístup do celého poľa pomocou aritmetiky ukazovateľa uľahčuje prístup. Medzi ukazovateľom a poľom je základný rozdiel, tj je kolekciou premenných podobného typu údajov, zatiaľ čo ukazovateľ je premenná, ktorá ukladá adresu inej premennej. Medzi poľom a ukazovateľom sú niektoré ďalšie rozdiely, ktoré sú uvedené nižšie v porovnávacej tabuľke.

  1. Porovnávacia tabuľka
  2. definícia
  3. Kľúčové rozdiely
  4. záver

Porovnávacia tabuľka

Základ pre porovnanieradukazovateľ
vyhlásenie// V C ++
zadajte var_name;
// V Jave.
typ var-name;
var_name = nový typ;
// V C ++
napíšte * var_name;
pracovnéUloží hodnotu premennej homogénneho dátového typu.Uložte adresu inej premennej rovnakého dátového typu ako ukazovateľ premenných dátového typu.
generácieMôže sa vygenerovať pole ukazovateľov.Môže sa vygenerovať ukazovateľ na pole.
Podpora JavaPodporovať koncepciu súboru.Nepodporuje ukazovatele.
skladovanieNormálne pole ukladá hodnoty premennej a ukazovacie pole ukladá adresu premenných.Ukazovatele sú špeciálne navrhnuté na ukladanie adresy premenných.
kapacitaPole môže uchovávať počet prvkov uvedených vo veľkosti premennej poľa. Ukazovateľ ukazovateľa môže naraz ukladať adresu iba jednej premennej.


Definícia poľa

Pole je kolekcia prvkov toho istého dátového typu a všetky tieto prvky sa označujú spoločným názvom, ktorým je názov premennej poľa. Prístup ku konkrétnemu prvku poľa je možný prostredníctvom prístupu k špecifickému indexu tohto poľa, v ktorom je tento prvok uložený. Pole môže byť jednorozmerné pole, dvojrozmerné pole alebo viacrozmerné pole. Môže sa tiež vygenerovať pole ukazovateľov, t.j. pole obsahujúce všetky premenné ako ukazovatele. V „C ++“ sú polia staticky alokované, zatiaľ čo v „Java“ sú polia dynamicky alokované.

// V C ++ napíšte var_name; // V Jave. typ var-name; var_name = nový typ;

„Typ“ tu označuje dátový typ premennej poľa, „var_name“ označuje názov daný premennej poľa, „veľkosť“ označuje kapacitu premennej poľa, tj koľko prvkov „typu“ sa môže uložiť do tejto premennej poľa , Existujú dva spôsoby prístupu k poľu, prvý „aritmetický ukazovateľ“ a druhý „indexovanie“, z ktorých „aritmetický ukazovateľ“ je rýchlejší.


// prístup pomocou aritmetického ukazovateľa Void display_array (int * S) {while (* s) {cout (<< "hodnota je" << * s); * S ++; }}

Použitie „aritmetiky ukazovateľa“ by fungovalo rýchlejšie v porovnaní s „indexovaním polí“, t. J. Prístup k premennej poľa pomocou jeho indexu. Ak potrebujete do funkcie preniesť pole ukazovateľov, dá sa to urobiť pomocou rovnakej metódy, ktorú používate na odovzdanie normálneho poľa, t. J. Priamo zavolať funkciu s názvom poľa bez indexu.

Pochopme to príkladom

// Vyhlásenie poľa ukazovateľov. int * p;

Tu ukazuje, že „p“ je pole typu celočíselného typu, bude držať adresu 10 premenných typu celočíselného typu. Poďme vyššie uvedené pole ukazovateľa na displej funkcie ().

displej (p); // Vyvolajte zobrazenie funkcie. void display (int * d) {// Funkcia prijímajúca pole ukazovateľov. pre (int i = 0; i <10; i ++) {cout << ("index" <

Táto funkcia postupne zobrazí hodnoty prítomné v premenných, ktorých adresy sú uložené v tomto poli ukazovateľov.

Definícia ukazovateľa

Ukazovateľ je premenná, ktorá uchováva adresu v pamäti inej premennej. Dátový typ premennej ukazovateľa aj premennej, ktorej adresa je priradená ukazovateľovej premennej, musí byť rovnaký. Premenná ukazovateľa je deklarovaná ako nasledujúca.

// Vyhlásenie v C ++ type * name;

Tu je „typ“ typ údajov, „názov“ je názov premennej ukazovateľa. Typ určuje, akú adresu premennej je možné uložiť v premennej ukazovateľa. Napríklad celočíselný ukazovateľ uloží adresu celočíselnej premennej. Existujú dvaja operátori ukazovateľov „*“ a „&“. Operátor „*“ vráti hodnotu nachádzajúcu sa na adrese, ktorá je uložená v premennej a za ňou nasleduje znak „*“. Operátor „&“ vráti adresu premennej, za ktorou nasleduje znak „&“.

// napríklad int b = 10 int a = & b; // Tu je adresa b uložená v premennej a. // umožňuje adresu b je 2000, takže teraz a = 2000. int c = * a; // Tu premenná celočíselného ukazovateľa * a vráti hodnotu, ktorá sa nachádza na adrese uloženej v .ie. c = 10.

Na ukazovatele, t. J. Sčítanie a odčítanie, môžete použiť iba dva aritmetické operátory. Ak použijete prírastok na celočíselnú premennú ukazovateľa, zvýši sa o veľkosť dátového typu, t. J. O 2 bajty, pretože ide o celé číslo, na prírastok bude musieť ukazovať na ďalšiu celočíselnú premennú. To isté platí v prípade dekrementov.

// p je celé číslo s hodnotou 2000. p ++; // teraz p = 2002. p--; // teraz p znova obsahuje 2000, znížené o dva bajty.

  1. Pole uchováva premenné podobných typov údajov a dátové typy premenných sa musia zhodovať s typom poľa. Na druhej strane, ukazová premenná ukladá adresu premennej, typu podobného typu ukazovacej premennej.
  2. Môžeme vygenerovať pole ukazovateľov, t. J. Pole, ktorého premenné sú ukazovatele ukazovateľov. Na druhej strane môžeme vytvoriť ukazovateľ, ktorý ukazuje na pole.
  3. Java podporuje pole, ale nepodporuje ukazovatele.
  4. Veľkosť poľa určuje počet premenných, ktoré je možné uložiť, zatiaľ čo; ukazová premenná môže uložiť adresu iba premennej

Poznámka:

Java nepodporuje ukazovatele a prísne sa im nevyhýba.

záver:

Keď musíme pracovať na dátových prvkoch podobného typu údajov, potom namiesto toho, aby sme pracovali oddelene na premenných, môžeme vytvoriť rad týchto premenných podobných typov údajov a potom s nimi pracovať. Ukazovatele sú potrebné pre niektorý program, dáva obrovský výkon, ale bohužiaľ, ak ukazovateľ obsahuje nesprávnu hodnotu, bude najťažšie nájsť chybu.