Atšķirība starp masīvu un rādītāju

Autors: Laura McKinney
Radīšanas Datums: 1 Aprīlis 2021
Atjaunināšanas Datums: 3 Jūlijs 2024
Anonim
Difference between arrays and pointers in C
Video: Difference between arrays and pointers in C

Saturs


Starp masīvu un rādītāju pastāv cieša saistība. Rādītāju var izmantot, lai piekļūtu masīva elementiem, piekļūstot visam masīvam, izmantojot rādītāja aritmētiku, piekļuve tiek padarīta ātrāka. Starp rādītāju un masīvu pastāv pamata atšķirība, ti, masīvs ir līdzīga veida datu mainīgo lielumu kolekcija, turpretī rādītājs ir mainīgais, kas saglabā cita mainīgā adresi. Starp masīvu un rādītāju ir arī dažas citas atšķirības, kas ir apskatītas turpmāk salīdzināšanas tabulā.

  1. Salīdzināšanas tabula
  2. Definīcija
  3. Galvenās atšķirības
  4. Secinājums

Salīdzināšanas tabula

Salīdzināšanas pamatsMasīvsRādītājs
Deklarācija// C ++
ierakstiet var_name;
// Java.
tips var-name;
var_name = jauns tips;
// C ++
ierakstiet * var_name;
StrādāSaglabā homogēna datu veida mainīgā lielumu.Saglabājiet tāda paša veida datu mainīgā lieluma adresi, kā rādītāja mainīgo datu veidam.
PaaudzeVar ģenerēt rādītāju masīvu.Var ģenerēt masīva rādītāju.
Java atbalstsAtbalstiet masīva koncepciju.Neatbalsta norādes.
UzglabāšanaNormālā masīvā tiek saglabātas mainīgo lielumu vērtības un rādītāju masīvs saglabā mainīgo adreses.Rādītāji ir īpaši izstrādāti, lai saglabātu mainīgo lielumu adreses.
JaudaMasīvs var saglabāt elementu skaitu, kas minēts masīva mainīgā lielumā. Rādītāja mainīgais vienlaikus var saglabāt tikai viena mainīgā adresi.


Masīva definīcija

Masīvs ir tā paša datu tipa elementu kolekcija, un visus šos elementus apzīmē ar parasto nosaukumu, kas ir masīva mainīgā nosaukums. Konkrētam masīva elementam var piekļūt, piekļūstot tā masīva īpašajam indeksam, kurā šis elements tiek glabāts. Masīvi var būt viendimensiju masīvs, divdimensiju masīvs vai daudzdimensionāls masīvs. Var ģenerēt arī rādītāju masīvu, t.i., masīvu, kas satur visus mainīgos kā rādītāja mainīgos. 'C ++' masīvi tiek statiski sadalīti, turpretī 'Java' masīvi tiek sadalīti dinamiski.

// C ++ ierakstiet var_name; // Java. tips var-name; var_name = jauns tips;

Šeit “tips” apzīmē masīva mainīgā datu tipu, “var_name” apzīmē masīva mainīgajam piešķirto nosaukumu, “lielums” apzīmē masīva mainīgā ietilpību, ti, cik “tipa” elementus var uzglabāt šajā masīva mainīgajā. . Ir divas piekļuves metodes masīvam, pirmais ir “rādītāja aritmētika” un otrais “masīva indeksēšana”, no kuriem “rādītāja aritmētika” ir ātrāka.


// Piekļuve, izmantojot rādītāja aritmētiku Void display_array (int * S) {while (* s) {cout (<< "vērtība ir" << * s); * s ++; }}

Izmantojot “rādītāja aritmētiku”, darbotos ātrāk nekā ar “masīva indeksēšanu”, t.i., piekļūstot masīva mainīgajam izmantojot tā indeksu. Ja funkcijā ir jānorāda rādītāju masīvs, to var izdarīt, izmantojot to pašu metodi, kuru izmantojat normāla masīva nodošanai, t.i., tieši izsaukt funkciju ar masīva nosaukumu, bez indeksa.

Ļaujiet mums to saprast ar piemēru

// Norādījumu masīva deklarēšana. int * p;

Šeit parādīts, ka “p” ir vesels skaitlis, un tas saturēs 10 vesela skaitļa veida mainīgos. Nodosim iepriekš parādīto rādītāju masīvu funkciju displejā ().

displejs (p); // Izsauciet funkciju displeju. tukšs displejs (int * d) {// Funkcija, kas uztver rādītāja masīvu. priekš (int i = 0; i <10; i ++) {cout << ("indekss" <

Šī funkcija parādīs mainīgajos esošās vērtības, kuru adreses secīgi tiek saglabātas šajā rādītāju masīvā.

Rādītāja definīcija

Rādītājs ir mainīgais, kas satur cita mainīgā atmiņas adresi. Gan rādītāja mainīgā, gan mainīgā, kura adrese tiek piešķirta rādītāja mainīgajam, datu tipam jābūt vienādam. Rādītāja mainīgais lielums ir šāds.

// Deklarācija C ++ tipa * nosaukumā;

Šeit “tips” ir datu tips, “nosaukums” ir rādītāja mainīgā nosaukums. “Tips” nosaka, kāda veida mainīgo var saglabāt rādītāja mainīgajā. Piemēram, vesels skaitlis rādītājā saglabās vesela skaitļa mainīgā adresi. Ir divi rādītāju operatori “*” un “&”. Operators “*” atgriež adresē esošo vērtību, kas tiek saglabāta mainīgajā, kam seko “*” zīme. Operators “&” atgriež mainīgā adresi, kurai seko zīme “&”.

// piemēram, int b = 10 int a = & b; // Šeit b adrese tiek saglabāta mainīgajā a. // ļauj b adresei būt 2000, tātad a = 2000. int c = * a; // Šeit vesela skaitļa rādītāja mainīgais * a atgriezīs vērtību, kas atrodas uz adresi, kas glabājas .ie. c = 10.

Ir tikai divi aritmētiski operatori, kurus varat izmantot rādītājiem, t.i., saskaitīšanai un atņemšanai. Ja skaitļa rādītāja mainīgajam piemērosit pieaugumu, tas tiks palielināts par datu veida lielumu, t.i., par 2 baitiem, jo ​​tas ir vesels skaitlis rādītājam, un, pieaugot, tam būs jānorāda nākamais vesels skaitlis. Tas pats ir ar samazināšanu.

// p ir vesela skaitļa rādītājs, kas saskaras ar vērtību 2000. p ++; // tagad p = 2002. gads. p--; // tagad p atkal satur 2000, kas samazināts par diviem baitiem.

  1. Masīvs glabā līdzīgu datu tipu mainīgos, un mainīgo datu tipiem jāatbilst masīva tipam. No otras puses, rādītāja mainīgais saglabā mainīgā adresi, tips līdzīgs rādītāja mainīgā tipa tipam.
  2. Mēs varam ģenerēt rādītāju masīvu, t.i., masīvu, kura mainīgie ir rādītāja mainīgie. No otras puses, mēs varam izveidot rādītāju, kas norāda uz masīvu.
  3. Java atbalsta masīvu, bet tas neatbalsta norādes.
  4. Masīva lielums nosaka mainīgo skaitu, ko tas var uzglabāt; rādītāja mainīgais var saglabāt tikai mainīgā adresi

Piezīme:

Java neatbalsta un stingri izvairās no norādēm.

Secinājums:

Ja mums jāstrādā ar līdzīga veida datu elementiem, tā vietā, lai atsevišķi strādātu ar mainīgajiem, mēs varam izveidot līdzīgu datu tipu mainīgo masīvu un pēc tam darboties. Rādītāji ir nepieciešami kādai programmai, tas dod milzīgu jaudu, bet, diemžēl, ja rādītājā ir nepareiza vērtība, to būs visgrūtāk atrast.