Ero taulukon ja osoittimen välillä

Kirjoittaja: Laura McKinney
Luomispäivä: 1 Huhtikuu 2021
Päivityspäivä: 13 Saattaa 2024
Anonim
Ero taulukon ja osoittimen välillä - Tekniikka
Ero taulukon ja osoittimen välillä - Tekniikka

Sisältö


Matriisin ja osoittimen välillä on läheinen suhde. Osoittimen avulla voidaan päästä matriisielementteihin. Koko matriisin käyttäminen osoittimen aritmeettisen avulla nopeuttaa pääsyä. Osoittimen ja taulukon välillä on perusero, eli taulukko on kokoelma muuttujia, jotka ovat samanlaisia ​​tietotyyppejä, kun taas osoitin on muuttuja, joka tallentaa toisen muuttujan osoitteen. Matriisin ja osoittimen välillä on joitain muita eroja, joita käsitellään jäljempänä vertailutaulussa.

  1. Vertailutaulukko
  2. Määritelmä
  3. Keskeiset erot
  4. johtopäätös

Vertailutaulukko

Vertailun perusteetryhmäOsoitin
ilmoitus// C ++: ssa
kirjoita var_name;
// Java.
tyyppi var-name;
var_name = uusi tyyppi;
// C ++: ssa
kirjoita * var_name;
TyöskentelyTallentaa homogeenisen datatyypin muuttujan arvon.Tallenna saman tietotyypin toisen muuttujan osoite kuin osoittimen muuttujien tietotyypille.
sukupolviVoit luoda joukon osoittimia.Voit luoda osoittimen taulukkoon.
Java-tukiTue taulukon käsitettä.Ei tue osoittimia.
varastointiNormaali taulukko tallentaa muuttujien arvot ja osoittimien taulukot tallentavat muuttujien osoitteet.Osoittimet on erityisesti suunniteltu tallentamaan muuttujien osoitteet.
kapasiteettiTaulukko voi tallentaa elementtien lukumäärän, joka mainitaan taulukon muuttujan koosta. Osoitinmuuttuja voi tallentaa vain yhden muuttujan osoitteen kerrallaan.


Määritelmä Array

Matriisi on kokoelma saman tietotyypin elementtejä, ja kaikki nämä elementit viitataan yleisellä nimellä, joka on taulukomuuttujan nimi. Tiettyyn taulukkoelementtiin pääsee pääsemällä sen taulukon erityiseen hakemistoon, johon kyseinen elementti on tallennettu. Taajuudet voivat olla yksiulotteinen taulukko, kaksiulotteinen taulukko tai moniulotteinen taulukko. Osoittimien ryhmä voidaan myös generoida, ts. Taulukko, joka sisältää kaikki muuttujat osoittomuuttujina. 'C ++': ssa taulukot allokoidaan staattisesti, kun taas 'Java'ssa taulukot allokoidaan dynaamisesti.

// Kirjoita C ++: een var_name; // Java. tyyppi var-name; var_name = uusi tyyppi;

Tässä 'tyyppi' tarkoittaa taulukomuuttujan tietotyyppiä, 'var_nimi' tarkoittaa taulukomuuttujalle annettua nimeä, 'koko' tarkoittaa taulukomuuttujan kapasiteettia, ts. Kuinka monta 'tyypin' elementtiä voidaan tallentaa kyseiseen taulukomuuttujaan . Taulukkoon pääsemiseksi on kaksi tapaa, ensimmäinen 'osoittimen aritmeettinen' ja toinen 'taulukon indeksointi', joista 'osoittimen aritmeettinen' on nopeampaa.


// pääsy osoittimen aritmeettisella avulla Void display_array (int * S) {while (* s) {cout (<< "arvo on" << * s); * S ++; }}

'Osoittimen aritmeettisen' käyttäminen toimisi nopeammin verrattuna 'taulukon indeksointiin', ts. Pääsemään taulukon muuttujaan indeksin avulla. Jos joudut siirtämään osoittimien joukon funktioon, se voidaan tehdä käyttämällä samaa menetelmää, jota käytät normaalin taulukon siirtämiseen, so. Kutsutaan funktio suoraan taulukon nimellä ilman indeksiä.

Ymmärtäkäämme se esimerkillä

// Osoittimien ryhmän ilmoittaminen. int * p;

Tässä se osoittaa, että 'p' on kokonaislukutyyppinen taulukko, ja se pitää osoitetta 10 kokonaisluvutyyppistä muuttujaa. Siirrämme yllä oleva osoitinryhmä toimintanäyttöön ().

näyttö (p); // Soita toimintonäyttöön. tyhjä näyttö (int * d) {// Osoitinryhmän vastaanottava toiminto. varten (int i = 0; i <10; i ++) {cout << ("hakemisto" <

Tämä toiminto näyttää muuttujissa olevat arvot, joiden osoitteet tallennetaan tämän osoittimen taulukkoon peräkkäin.

Määritelmä osoitin

Osoitin on muuttuja, jolla on toisen muuttujan muistiosoite. Sekä osoittomuuttujan että muuttujan, jonka osoite osoitetaan osoittimelle, tietotyypin on oltava sama. Osoitinmuuttuja ilmoitetaan seuraavana.

// Ilmoitus C ++ -tyyppisellä * nimellä;

Tässä 'tyyppi' on tietotyyppi, 'nimi' on osoittimen muuttujan nimi. Tyyppi määrittelee millaisen muuttujan osoitteen voidaan tallentaa osoittimen muuttujaan. Esimerkiksi kokonaislukuosoitin tallentaa kokonaislukumuuttujan osoitteen. Osoittimen operaattoreita '*' ja '&' on kaksi. Operaattori '*' palauttaa osoitteessa olevan arvon, joka tallennetaan muuttujaan, jota seuraa '*' -merkki. '&' -Operaattori palauttaa muuttujan osoitteen, jota seuraa '&' -merkki.

// esimerkiksi int b = 10 int a = & b; // Tässä b: n osoite tallennetaan muuttujaan a. // antaa b: n osoitteen olevan 2000, joten a = 2000. int c = * a; // Tässä kokonaislukuosoitinmuuttuja * a palauttaa arvon, joka sijaitsee .ie-tiedostoon tallennetussa osoitteessa. c = 10.

On vain kaksi aritmeettista operaattoria, joita voit käyttää osoittimissa, ts. Summaamisessa ja vähentämisessä. Jos käytät lisäystä kokonaislukuosoitinmuuttujaan, sitä lisätään tietotyypin koosta, ts. 2 tavulla, koska se on kokonaislukuosoitin, lisäyksessä sen on osoitettava seuraava kokonaislukumuuttuja. Sama asia on vähennyksessä.

// p on kokonaislukuosoitin, joka tavoittaa arvon 2000. p ++; // nyt p = 2002. p--; // nyt p sisältää taas 2000, sellaisena kuin se on pienennetty kahdella tavulla.

  1. Taulukko tallentaa samanlaisten tietotyyppien muuttujat, ja muuttujien tietotyyppien on vastattava taulukotyyppiä. Toisaalta osoitinmuuttuja tallentaa muuttujan osoitteen, joka on samanlainen kuin osoittomuuttujatyyppi.
  2. Voimme luoda joukon osoittimia, ts. Taulukon, jonka muuttujat ovat osoittimen muuttujia. Toisaalta voimme luoda osoittimen, joka osoittaa taulukon.
  3. Java tukee ryhmää, mutta se ei tue osoittimia.
  4. Taulukon koko päättää muuttujien lukumäärän, johon se voi tallentaa; osoitinmuuttuja voi tallentaa vain muuttujien osoitteet

merkintä:

Java ei tue osoittimia tai välttää niitä ehdottomasti.

johtopäätös:

Kun meidän on työskenneltävä samantyyppisten tietotyyppien tietoelementtien kanssa, sen sijaan, että toimisimme muuttujien kanssa erikseen, voimme luoda ryhmän samanlaisista tietotyypeistä koostuvista muuttujista ja sitten käyttää sitä. Osoittimet ovat tarpeen joillekin ohjelmille, se antaa valtavan voiman, mutta valitettavasti, jos osoitin sisältää väärän arvon, se on vaikein löytää virhe.