Razlika između niza i pokazivača

Autor: Laura McKinney
Datum Stvaranja: 1 Travanj 2021
Datum Ažuriranja: 17 Svibanj 2024
Anonim
023 - Programski jezik C - Pokazivači
Video: 023 - Programski jezik C - Pokazivači

Sadržaj


Između niza i pointera postoji blizak odnos. Pokazivač se može koristiti za pristup elementima polja, a pristup čitavom nizu pomoću aritmetike pokazivača čini pristup bržim. Postoji osnovna razlika između pokazivača i matrice, to jest, niz je skup varijabli sličnog tipa podataka dok je pokazivač varijabla koja pohranjuje adresu druge varijable. Postoje neke druge razlike između niza i pointera koje su navedene u usporedbi na tablici.

  1. Usporedni grafikon
  2. definicija
  3. Ključne razlike
  4. Zaključak

Usporedni grafikon

Osnove za usporedburedPokazivač
Deklaracija// U C ++
vrsta var_name;
// U Javi.
vrsta var-name;
var_name = nova vrsta;
// U C ++
upišite * var_name;
RadnaPohranjuje vrijednost varijable homogenog tipa podataka.Spremite adresu druge varijable istog tipa podataka kao i tip podataka varijable pointera.
GeneracijaMože se generirati niz pokazivača.Može se generirati pokazivač na niz.
Java podrškaPodržite koncept niza.Ne podržava pokazivače.
skladištenjeNormalni niz pohranjuje vrijednosti varijable, a niz pokazivača pohranjuje adresu varijabli.Pokazivači su posebno dizajnirani za spremanje adrese varijabli.
KapacitetNiz može pohraniti broj elemenata koji su spomenuti u veličini varijable. Varijabla pokazivača može istovremeno pohraniti adresu samo jedne varijable.


Definicija niza

Niz je skup elemenata iste vrste podataka, a svi se ti elementi nazivaju zajedničkim imenom, a to je naziv varijable polja. Konkretnom elementu polja može se pristupiti pristupom specifičnom indeksu tog polja u kojem se taj element pohranjuje. Nizovi mogu biti jednodimenzionalni niz, dvodimenzionalni niz ili višedimenzionalni niz. Polje pokazivača također se može generirati, tj. Niz koji sadrži svu varijablu kao varijablu pointera. U "C ++" nizovima su statički dodijeljeni dok su u "Java" nizovi dinamički raspoređeni.

// U C ++ upišite var_name; // U Javi. vrsta var-name; var_name = nova vrsta;

Ovdje 'tip' označava vrstu podataka varijable matrike, 'var_name' označava naziv dodijeljen varijabli polja, 'veličina' označava kapacitet varijable polja, tj. Koliko elemenata 'vrste' se može pohraniti u tu varijablu polja , Postoje dvije metode pristupa nizu, prvi 'aritmetika pokazivača' i drugi 'indeksiranje nizova', od kojih je 'aritmetika pokazivača' brža.


// pristup pomoću aritmetike pointera Void display_array (int * S) {while (* s) {cout (<< "vrijednost je" << * s); * S ++; }}

Upotreba 'aritmetike pokazivača' radila bi brže u usporedbi s 'indeksiranjem nizova', tj. Pristupom varijabli zaslona koristeći svoj indeks. Ako trebate proslijediti niz pokazivača u funkciju, to se može učiniti istim postupkom kojim se koristi za prosljeđivanje normalnog niza, tj. Izravno poziva funkciju s imenom niza, bez ikakvog indeksa.

Shvatimo to na primjeru

// Deklariranje niza pokazivača. int * p;

Ovdje se pokazuje da je 'p' niz cijelog broja, a sadrži 10 varijabli cijelog broja. Prenosimo gornji pokazivački niz u funkcijski prikaz ().

prikaz (p); // Nazovite prikaz funkcije. nevažeći prikaz (int * d) {// Funkcija primanja pokazivačkog polja. for (int i = 0; i <10; i ++) {cout << ("indeks" <

Ova će funkcija prikazati vrijednosti prisutne u varijablama čije su adrese pohranjene u ovom nizu pokazivača.

Definicija Pointera

Pokazivač je varijabla koja sadrži memorijsku adresu druge varijable. Vrsta podataka i varijable pokazivača i varijable čija se adresa dodijeljuje varijabli pointer mora biti ista. Varijabla pokazivača je deklarirana kako slijedi.

// Izjava u nazivu C ++ *;

Ovdje je "type" vrsta podataka, "name" je naziv varijable pokazivača. "Vrsta" definira vrstu adrese varijable koja se može pohraniti u varijablu pointera. Na primjer, cijeli će pokazivač pohraniti adresu cijele varijable. Postoje dva operatora pokazivača '*' i '&'. Operator '*' vraća vrijednost koja se nalazi na adresi, a koja je pohranjena u varijabli, a zatim znak '*'. Operater "&" vraća adresu varijable kojoj slijedi znak "&".

// na primjer int b = 10 int a = & b; // Ovdje je adresa b spremljena u varijabli a. // dopušta da adresa b bude 2000, pa je sada a = 2000. int c = * a; // Ovdje će cjelobrojna varijabla pokazivanja * a vratiti vrijednost koja se nalazi na adresi pohranjenoj u .ie. c = 10.

Postoje samo dva aritmetička operatera koja možete koristiti na pokazivačima, tj. Zbrajanju i oduzimanju. Ako primijenite priraštaj na cjelobrojnu varijablu pointera, on će se povećavati veličinom vrste podataka, tj. Za 2 bajta, jer je to cijeli broj pointera, s priraštajem će morati usmjeriti sljedeću brojčanu varijablu. Isti je slučaj i sa dekretom.

// p je cijeli broj pokazivača koji sadrži vrijednost 2000. p ++; // sada p = 2002. p-; // p sada sadrži 2000 koja je smanjena za dva bajta.

  1. Niz pohranjuje varijable sličnih tipova podataka, a vrste podataka varijabli moraju odgovarati vrsti polja. S druge strane, varijabla pokazivača pohranjuje adresu varijable, tipa sličnog tipu varijable pokazivača.
  2. Možemo generirati niz pokazivača, tj. Niz čije su varijable varijable pointera. S druge strane, možemo stvoriti pokazivač koji upućuje na niz.
  3. Java podržava niz, ali ne podržava pokazivače.
  4. Veličina matrice određuje broj varijabli koje može pohraniti dok; varijabla pokazivača može pohraniti adresu samo varijable

Bilješka:

Java ne podržava ili strogo izbjegava pokazivače.

Zaključak:

Kad trebamo raditi na podatkovnim elementima sličnog tipa podataka, umjesto da radimo odvojeno na varijablama, možemo stvoriti niz tih varijabli sličnih vrsta podataka i na njima raditi. Pokazivači su potrebni za neki program, on daje ogromnu snagu, ali nažalost, ako pokazivač sadrži pogrešnu vrijednost, bit će to najteži bug za naći.