Razlika između niza i pokazivača
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.
- Usporedni grafikon
- definicija
- Ključne razlike
- Zaključak
Usporedni grafikon
Osnove za usporedbu | red | Pokazivač |
---|---|---|
Deklaracija | // U C ++ vrsta var_name; // U Javi. vrsta var-name; var_name = nova vrsta; | // U C ++ upišite * var_name; |
Radna | Pohranjuje vrijednost varijable homogenog tipa podataka. | Spremite adresu druge varijable istog tipa podataka kao i tip podataka varijable pointera. |
Generacija | Može se generirati niz pokazivača. | Može se generirati pokazivač na niz. |
Java podrška | Podržite koncept niza. | Ne podržava pokazivače. |
skladištenje | Normalni niz pohranjuje vrijednosti varijable, a niz pokazivača pohranjuje adresu varijabli. | Pokazivači su posebno dizajnirani za spremanje adrese varijabli. |
Kapacitet | Niz 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.
- 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.
- 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.
- Java podržava niz, ali ne podržava pokazivače.
- 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.