Razlika med matriko in kazalcem

Avtor: Laura McKinney
Datum Ustvarjanja: 1 April 2021
Datum Posodobitve: 14 Maj 2024
Anonim
SVBONY Sv305pro Обзор  ▶ Новая Астро камера для телескопа. Астрофото Луны, планет и звёзд
Video.: SVBONY Sv305pro Обзор ▶ Новая Астро камера для телескопа. Астрофото Луны, планет и звёзд

Vsebina


Med matriko in kazalcem obstaja tesna povezava. Kazalnik se lahko uporablja za dostop do elementov matrike, dostop do celotnega niza s pomočjo aritmetike kazalcev omogoča hitrejši dostop. Obstaja osnovna razlika med kazalcem in matriko, to je, da je matrika zbirka spremenljivk podobnega podatkovnega tipa, medtem ko je kazalec spremenljivka, ki shrani naslov druge spremenljivke. Obstaja nekaj drugih razlik med matriko in kazalcem, ki so opisane spodaj v primerjalni tabeli.

  1. Primerjalna tabela
  2. Opredelitev
  3. Ključne razlike
  4. Zaključek

Primerjalna tabela

Osnove za primerjavoNizKazalec
Izjava// V C ++
tip var_name;
// V Javi.
tip var-name;
var_name = nova vrsta;
// V C ++
tip * var_name;
DeloShrani vrednost spremenljivke homogenega podatkovnega tipa.Shranite naslov druge spremenljivke istega podatkovnega tipa kot podatkovni tip spremenljivke kazalca.
GeneracijaLahko se ustvari niz kazalcev.Lahko se ustvari kazalec na matriko.
Java-podporaPodprite koncept matrike.Ne podpira kazalcev.
SkladiščenjeObičajni niz shrani vrednosti spremenljivke, kazalec pa shrani naslov spremenljivk.Kazalci so posebej zasnovani za shranjevanje naslova spremenljivk.
ZmogljivostPolje lahko shrani število elementov, omenjenih v velikosti matrične spremenljivke. Kazalna spremenljivka lahko hkrati shrani naslov samo ene spremenljivke.


Opredelitev matrike

Niz je zbirka elementov istega podatkovnega tipa in vsi ti elementi se nanašajo s skupnim imenom, ki je ime spremenljivke matrike. Do določenega elementa matrike je mogoče dostopati z dostopom do specifičnega indeksa tistega niza, kjer je ta element shranjen. Nizi so lahko enodimenzionalni niz, dvodimenzionalni niz ali večdimenzionalni niz. Lahko se ustvari tudi matrika kazalcev, tj. Matrika, ki vsebuje vso spremenljivko kot spremenljivko kazalca. V 'C ++' so matriki razporejeni statično, medtem ko so v 'Java' matriki dinamično razporejeni.

// V vrsti C ++ var_name; // V Javi. tip var-name; var_name = nova vrsta;

Tukaj 'type' označuje vrsto podatkov spremenljivke matrike, 'var_name' označuje ime, dodeljeno spremenljivki matrike, 'size' označuje zmogljivost spremenljivke matrike, tj. Koliko elementov 'type' je mogoče shraniti v tej matrični spremenljivki . Obstajata dva načina dostopa do matrike, prva 'aritmetika kazalca' in druga 'indeksiranje matrike', od katerih je 'aritmetika kazalca' hitrejša.


// dostop z uporabo aritmetike kazalca Void display_array (int * S) {while (* s) {cout (<< "vrednost je" << * s); * s ++; }}

Uporaba 'aritmetike kazalca' bi delovala hitreje v primerjavi z 'indeksiranjem matrike', tj. Dostopom do spremenljivke matrike z uporabo indeksa. Če morate v funkcijo prenesti matriko kazalcev, lahko to storite z istim načinom, ki ga uporabljate za prenos običajnega niza, tj. Neposredno pokličete funkcijo z imenom matrike, brez kakršnega koli indeksa.

Naj nas razume s primerom

// Razglasitev matrike kazalcev. int * p;

Tukaj je razvidno, da je 'p' niz celoštevilčnih vrst, vseboval bo naslov 10 spremenljivk celega tipa. Prepustimo zgornji niz kazalec v funkcijski zaslon ().

zaslon (p); // Pokliči funkcijski zaslon. neveljaven prikaz (int * d) {// funkcija, ki sprejema kazalec. za (int i = 0; i <10; i ++) {cout << ("indeks" <

Ta funkcija bo prikazala vrednosti, ki so prisotne v spremenljivkah, katerih naslovi so zaporedno shranjeni v tem kazalcu.

Opredelitev kazalca

Kazalnik je spremenljivka, ki vsebuje pomnilniški naslov druge spremenljivke. Podatkovni tip obeh, kazalca spremenljivke in spremenljivke, katere naslov je dodeljen spremenljivki kazalca, mora biti enak. Spremenljivka kazalca je deklarirana na naslednji način.

// Izjava v imenu tipa C ++ *;

Tu je 'type' podatkovna vrsta, 'name' je ime spremenljivke kazalca. "Vrsta" določa, kateri naslov naslova spremenljivke se lahko shrani v spremenljivko kazalca. Na primer, celoten kazalec bo shranil naslov celoštevilčne spremenljivke. Obstajata dva operaterja kazalcev '*' in '&'. Operator '*' vrne vrednost, ki se nahaja na naslovu in je shranjena v spremenljivki, ki ji sledi znak '*'. Operater '&' vrne naslov spremenljivke, ki mu sledi znak '&'.

// na primer int b = 10 int a = & b; // Tu je naslov b shranjen v spremenljivki a. // omogočimo, da je naslov b 2000, torej a = 2000. int c = * a; // Tukaj bo spremenljivka kazalca celote * a vrnila vrednost, ki se nahaja na naslovu, shranjenem v .ie. c = 10.

Obstajata le dva aritmetična operaterja, ki ju lahko uporabljate na kazalcih, to je seštevanje in odštevanje. Če uporabite prirast na celoštevilčni spremenljivki kazalca, se bo povečalo za velikost vrste podatkov, tj. Za 2 bajta, saj je celoten kazalec, pri prirastu bo moral kazati naslednjo celoštevilčno spremenljivko. Enako je z odlokom.

// p je celoten kazalec, ki vsebuje vrednost 2000. p ++; // zdaj p = 2002. p--; // zdaj p spet vsebuje 2000, zmanjšano za dva bajta.

  1. Niz shranjuje spremenljivke podobnih podatkovnih vrst in podatkovni tipi spremenljivk se morajo ujemati s tipom matrike. Po drugi strani spremenljivka kazalca shrani naslov spremenljivke, ki je podoben tipu spremenljivke tipa kazalca.
  2. Lahko ustvarimo matriko kazalcev, tj. Matriko, katere spremenljivke so spremenljivke kazalca. Po drugi strani pa lahko izdelamo kazalec, ki kaže na matriko.
  3. Java podpira matriko, vendar ne podpira kazalcev.
  4. Velikost matrike določa število spremenljivk, ki jih lahko shrani, medtem ko; kazalca spremenljivke lahko shrani naslov samo spremenljivke

Opomba:

Java ne podpira ali se strogo izogiba kazalcem.

Zaključek:

Ko moramo delati na podatkovnih elementih podobnega podatkovnega tipa, lahko namesto, da ločeno delujemo na spremenljivkah, izdelamo matriko teh spremenljivk podobnih podatkovnih vrst in nato delujemo na njej. Kazalniki so potrebni za nek program, daje ogromno moči, a na žalost, če kazalec vsebuje napačno vrednost, ga bo najtežje najti.