Pointer vs Array
Një tregues është një lloj i të dhënave që mban një referencë për një vendndodhje memorie (d.m.th. një ndryshore tregues ruan një adresë të një lokacioni memorie në të cilën ruhen disa të dhëna). Vargjet janë struktura më e përdorur e të dhënave për të ruajtur një koleksion elementësh. Shumica e gjuhëve të programimit ofrojnë metoda për të deklaruar lehtësisht vargjet dhe aksesin e elementeve në vargje.
Çfarë është një Pointer?
Një tregues është një lloj të dhënash që ruan një adresë të një lokacioni memorie në të cilën ruhen disa të dhëna. Me fjalë të tjera, një tregues mban një referencë për një vendndodhje memorie. Qasja në të dhënat e ruajtura në vendndodhjen e memories që referohet nga treguesi quhet dereferencim. Gjatë kryerjes së operacioneve të përsëritura, të tilla si kalimi i pemëve/vargjeve, kërkimi i tabelave, etj., përdorimi i treguesve do të përmirësonte performancën. Kjo për shkak se çreferencimi dhe kopjimi i treguesve është më i lirë sesa kopjimi dhe qasja në të vërtetë e të dhënave të treguara nga treguesit. Një tregues null është një tregues që nuk tregon asgjë. Në Java, qasja në një tregues null do të gjeneronte një përjashtim të quajtur NullPointerException.
Çfarë është një grup?
Treguar në figurën 1, është një pjesë e kodit që përdoret zakonisht për të deklaruar dhe caktuar vlera në një grup. Figura 2 përshkruan se si do të dukej një grup në memorie.
vlerat int[5]; vlerat[0]=100; vlerat[1]=101; vlerat[2]=102; vlerat[3]=103; vlerat[4]=104; |
Figura 1: Kodi për deklarimin dhe caktimin e vlerave në një grup
100 | 101 | 102 | 103 | 104 |
Indeksi: 0 | 1 | 2 | 3 | 4 |
Figura 2: Vargu i ruajtur në memorie
Kodi i mësipërm përcakton një grup që mund të ruajë 5 numra të plotë dhe ato aksesohen duke përdorur indekset 0 deri në 4. Një veti e rëndësishme e një grupi është se, i gjithë grupi ndahet si një bllok i vetëm memorie dhe çdo element merr hapësirën e vet në grup. Pasi të përcaktohet një grup, madhësia e tij fiksohet. Pra, nëse nuk jeni të sigurt për madhësinë e grupit në kohën e përpilimit, do t'ju duhet të përcaktoni një grup mjaft të madh për të qenë në anën e sigurt. Por, në shumicën e rasteve, ne në fakt do të përdorim më pak elementë sesa kemi ndarë. Pra, një sasi e konsiderueshme memorie është në të vërtetë e humbur. Nga ana tjetër, nëse "vargu mjaft i madh" nuk është në fakt mjaft i madh, programi do të rrëzohej.
Cili është ndryshimi midis treguesve dhe vargjeve?
Një tregues është një lloj i të dhënave që ruan një adresë të një lokacioni memorie në të cilën ruhen disa të dhëna, ndërsa vargjet janë struktura e të dhënave më e përdorur për të ruajtur një koleksion elementësh. Në gjuhën e programimit C, indeksimi i vargjeve bëhet duke përdorur aritmetikën e treguesit (d.m.th. elementi i i-të i grupit x do të ishte ekuivalent me (x+i)). Prandaj në C, grupi i treguesve që tregojnë një grup vendndodhjesh memorie që janë të njëpasnjëshme, mund të mendohet si një grup. Më tej, ka një ndryshim në mënyrën se si operatori i madhësisë së funksionon në tregues dhe vargje. Kur aplikohet në një grup, operatori sizeof do të kthejë të gjithë madhësinë e grupit, ndërsa kur aplikohet në një tregues, ai do të kthejë vetëm madhësinë e treguesit.