Pointer vs Array
Pokazivač je vrsta podataka koja sadrži referencu na memorijsko mjesto (tj. Varijabla pokazivača pohranjuje adresu memorijske lokacije u koju su pohranjeni neki podaci). Nizovi su najčešće korištena podatkovna struktura za pohranu zbirke elemenata. Većina programskih jezika pruža metode za lako deklariranje nizova i pristupanje elementima u polju.
Što je Pointer?
Pokazivač je vrsta podataka koja pohranjuje adresu memorijske lokacije u koju su pohranjeni neki podaci. Drugim riječima, pokazivač sadrži referencu na mjesto u memoriji. Pristup podacima pohranjenim na memorijskoj lokaciji na koje upućuje pokazivač naziva se preusmjeravanjem. Prilikom izvođenja ponavljajućih operacija poput prelaska stabala / nizova, pregledavanja tablice itd., Korištenje pokazivača poboljšalo bi performanse. To je zato što je preusmjeravanje i kopiranje pokazivača jeftinije od stvarnog kopiranja i pristupa podacima koji pokazuju pokazivači. Nulta pokazivač je pokazivač koji ne upućuje na ništa. U Javi, pristup null pokazivaču stvorio bi iznimku koja se zove NullPointerException.
Što je niz?
Prikazano na slici 1, dio je koda koji se obično koristi za deklariranje i dodjeljivanje vrijednosti polju. Slika 2 prikazuje kako bi niz izgledao u memoriji.
int vrijednosti [5]; Vrijednosti [0] = 100; Vrijednosti [1] = 101; Vrijednosti [2] = 102; Vrijednosti [3] = 103; Vrijednosti [4] = 104; |
Slika 1: Kôd za proglašavanje i dodjeljivanje vrijednosti polju
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Slika 2: Niz pohranjen u memoriji
Gornji kôd definira niz koji može pohraniti 5 cjelobrojnih brojeva i njima se pristupa pomoću indeksa 0 do 4. Jedno važno svojstvo matrice je da je cjelokupni niz dodijeljen kao jedan blok memorije i svaki element dobiva vlastiti prostor u polju , Jednom kada je niz definiran, fiksira se njegova veličina. Dakle, ako niste sigurni u veličinu matrice u vrijeme sastavljanja, morali biste definirati dovoljno veliki niz da biste bili na sigurnoj strani. Ali većinu vremena zapravo ćemo koristiti manje broja elemenata nego što smo ih izdvojili. Dakle, znatna količina memorije je zapravo izgubljena. S druge strane, ako "dovoljno veliki niz" zapravo nije dovoljno velik, program bi se srušio.
Koja je razlika između Pointera i Arraysa?
Pokazivač je vrsta podataka koja pohranjuje adresu memorijske lokacije u kojoj su pohranjeni neki podaci, dok su nizovi najčešće korištena struktura podataka za spremanje zbirke elemenata. U programskom jeziku C indeksiranje matrice provodi se korištenjem aritmetike pokazivača (tj., I element elementa niza x bi bio jednak * (x + i)). Stoga se u C skupu pokazivača koji upućuju na niz memorijskih mjesta koja su uzastopna mogu smatrati nizom. Nadalje, postoji razlika u načinu na koji operator sizeof djeluje na pokazivače i polja. Kad se primijeni na niz, operator sizeof vratit će cijelu veličinu matrice, dok će se, kada se primijeni na pokazivač, vratiti samo veličina pokazivača..