Különbség a tömb és a mutató között

Szerző: Laura McKinney
A Teremtés Dátuma: 1 Április 2021
Frissítés Dátuma: 15 Lehet 2024
Anonim
Különbség a tömb és a mutató között - Technológia
Különbség a tömb és a mutató között - Technológia

Tartalom


A tömb és a mutató között szoros kapcsolat van. A mutató hozzáférhető a tömb elemekhez, a teljes tömb eléréséhez a mutató számtani segítségével gyorsabbá válik a hozzáférés. Alapvető különbség van a mutató és a tömb között, azaz a tömb hasonló adattípusú változók gyűjteménye, míg a mutató egy olyan változó, amely egy másik változó címét tárolja. Van néhány más különbség a tömb és a mutató között, amelyeket az alábbiakban tárgyalunk az összehasonlító táblázatban.

  1. Összehasonlító táblázat
  2. Meghatározás
  3. Főbb különbségek
  4. Következtetés

Összehasonlító táblázat

Az összehasonlítás alapjaSorMutató
Nyilatkozat// C ++-ban
írja var_name;
// Java-ban.
írja var-name;
var_name = új típus;
// C ++-ban
type * var_name;
DolgozóA homogén adattípus változójának értékét tárolja.Tárolja az azonos adattípusú másik változó címét, mint az mutatótípus adattípusa.
GenerációEgy sor tömb generálható.Egy tömb mutatója generálható.
Java támogatásTámogassa a tömb koncepcióját.Nem támogatja a mutatókat.
TárolásEgy normál tömb a változó értékeit tárolja, a mutató tömb a változók címét tárolja.A mutatókat kifejezetten a változók címeinek tárolására tervezték.
KapacitásEgy tömb tárolhatja az elemek számát, amelyeket a tömb változójában említenek. Egy mutatóváltozó egyszerre csak egy változó címét tárolhatja.


A tömb meghatározása

Egy tömb ugyanazon adattípus elemének gyűjteménye, és ezeket az elemeket köznévvel utalják, amely egy tömbváltozó neve. Egy adott tömb elemhez hozzá lehet férni annak a tömbnek az indexéhez, ahol az elem tárolva van. Az tömb lehet egydimenziós tömb, kétdimenziós tömb vagy többdimenziós tömb. Mutatók tömbje is létrehozható, azaz olyan tömb, amely az összes változót mutató változóként tartalmazza. A 'C ++' esetében a tömbök statikusan vannak elosztva, míg a 'Java' esetén a tömbök dinamikusan vannak elosztva.

// A C ++ típusba írja be a var_name nevet; // Java-ban. írja var-name; var_name = új típus;

Itt a 'type' egy tömbváltozó adattípusát, a "var_name" a tömb változónak adott nevet, a "size" a tömb változó kapacitását jelöli, azaz hány "type" elem tárolható abban a tömb változóban . Kétféle módszer érhető el egy tömb elérésére: az első „mutató aritmetikai” és a második „tömb indexelés”, amelyek közül a „mutató számtani” gyorsabb.


// hozzáférés mutató aritmetika segítségével Void display_array (int * S) {míg (* s) {cout (<< "érték" << * s); * S ++; }}

A „mutató aritmetika” használata gyorsabban működne, mint a „tömb indexelése”, vagyis a tömb változóhoz való hozzáférése az index segítségével. Ha mutatók tömbjét kell átadnia egy függvénynek, akkor ugyanazzal a módszerrel végezheti el, amelyet egy normál tömb átadására használ, azaz közvetlenül hívja meg a függvényt a tömb nevével, index nélkül.

Megértjük a példával

// A mutatók tömbének deklarálása. int * p;

Itt megmutatja, hogy a „p” egy egész típusú tömb, a 10 egész szám típusú változó címét fogja tartani. Adjuk át a fenti mutatót tömböt egy funkciókijelzőn ().

kijelző (p); // Hívja a funkciókijelzőt. void display (int * d) {// A mutatót tömörítő funkció. for (int i = 0; i <10; i ++) {cout << ("index" <

Ez a funkció megjeleníti azokat a értékeket, amelyek jelen vannak a változókban, amelyek címeit ebben a mutatósorban egymás után tárolják.

A mutató meghatározása

A mutató egy olyan változó, amely egy másik változó memóriacímét tárolja. Mind a mutatóváltozó, mind a változó adattípusának azonosnak kell lennie. A mutatóváltozót a következőképpen deklaráljuk.

// Nyilatkozat C ++ típusú * névben;

Itt a 'type' adattípus, 'name' a mutatóváltozó neve. A 'type' meghatározza, hogy milyen típusú változó címe tárolható a mutató változóban. Például az egész mutató az egész változó címét tárolja. Két mutató operátor létezik: '*' és '&'. A '*' operátor visszaadja a címen található értéket, amelyet a változóban tárol, amelyet a '*' jel követ. A '&' operátor visszaadja a változó címét, amelyet a '&' jel követ.

// például int b = 10 int a = & b; // Itt a b címet az a változó tárolja. // hagyja, hogy b címe 2000 legyen, tehát most a = 2000. int c = * a; // Itt az * a egész mutatóváltozó az .ie-ben tárolt címen található értéket adja vissza. c = 10.

Csak két számtani operátor létezik, amelyek mutatószámokon használhatók, azaz összeadhatók és kivonhatók. Ha növekményt alkalmaz egy egész mutató-változóra, akkor az adattípus méretével, azaz 2 bájtkal növekszik, mivel egész szám mutató, a növekménynél a következő egész számváltozót kell mutatnia. Ugyanez vonatkozik a csökkentésre.

// p egy egész mutató, amely érintkezik 2000. értékkel. p ++; // most p = 2002. p--; // most p újra tartalmazza a 2000-et, két bájt csökkentéssel.

  1. Egy tömb tárolja a hasonló adattípusok változóit, és a változók adattípusainak meg kell egyezniük a tömb típusával. Másrészt a mutatóváltozó egy olyan változó címét tárolja, amelynek típusa hasonló a mutatóváltozó típusához.
  2. Generálhatunk egy mutatók tömbjét, azaz olyan tömböt, amelynek a változói a mutató változók. Másrészt létrehozhatunk egy mutatót, amely egy tömbre mutat.
  3. A Java támogatja a tömböt, de nem támogatja a mutatókat.
  4. Egy tömbméret határozza meg a változók számát, amelyet tárolhat; egy mutatóváltozó csak a változó címét tárolhatja

Jegyzet:

A Java nem támogatja vagy szigorúan elkerüli a mutatókat.

Következtetés:

Ha hasonló típusú adatelemeken kell dolgoznunk, akkor ahelyett, hogy külön-külön a változókkal dolgoznánk, tömböt készíthetünk a hasonló adattípusú változókról, majd működtethetjük rajta. Mutatók szükségesek valamilyen programhoz, óriási energiát ad, de sajnos, ha egy mutató helytelen értéket tartalmaz, akkor a legnehezebb hibát találni.