Pointeri

From Wikipedia, the free encyclopedia

Pointeri
Remove ads

shkencën kompjuterike, një pointer është një objekt në shumë gjuhë programimi që ruan një adresë të kujtesës . Kjo mund të jetë ajo e një vlere tjetër të vendosur në kujtesën e kompjuterit, ose në disa raste, ajo e harduerit kompjuterik të hartuar me kujtesë . Një pointer referon një vendndodhje në memorie dhe marrja e vlerës së ruajtur në atë vendndodhje njihet si dereferencimi i treguesit. Si një analogji, një numër faqeje në indeksin e një libri mund të konsiderohet si një tregues për në faqen përkatëse; dereferencimi i një treguesi të tillë do të bëhej duke rrëshqitur në faqen me numrin e dhënë të faqes dhe duke lexuar tekstin që gjendet në atë faqe. Formati dhe përmbajtja aktuale e një ndryshoreje treguese varet nga arkitektura bazë e kompjuterit .

Unë i konsideroj deklaratat e caktimeve dhe ndryshoret e tipit pointer si ndër "thesaret më të vlefshme" të shkencës kompjuterike.

Donald Knuth, Programim i Strukturuar, me shkoni te Deklaratat
Thumb
Një pointer a që tregon adresën e kujtesës të lidhur me një ndryshore b, dmth. a përmban adresën 1008 në kujtesë, atë të ndryshores b . Në këtë diagram, arkitektura kompjuterike përdor të njëjtën hapësirë adresash dhe primitivë të të dhënave si për treguesit ashtu edhe për ato jo-pointerët; kjo nevojë nuk duhet të jetë rasti.

Përdorimi i pointerave përmirëson ndjeshëm performancën për operacionet e përsëritura, si bredhja e strukturave të përsëritura të të dhënave (p.sh. vargjet, tabelat e kërkimit, tabelat e kontrollit dhe strukturat pemë ). Në veçanti, shpesh është shumë më e lirë në kohë dhe hapësirë për të kopjuar dhe dereferencuar treguesit sesa për të kopjuar dhe aksesuar të dhënat në të cilat tregojnë treguesit.

Një tregues është një zbatim i thjeshtë, më konkret i llojit të të dhënave më abstrakte, të referencës . Disa gjuhë, veçanërisht gjuhët e nivelit të ulët, mbështesin një lloj pointeri, megjithëse disa kanë më shumë kufizime në përdorimin e tyre se të tjerat. Ndërsa fjala "pointer" është përdorur për t'iu referuar referencave në përgjithësi, ai zbatohet më mirë për strukturat e të dhënave, ndërfaqja e të cilave lejon në mënyrë eksplicite që pointeri të manipulohet (aritmetikisht nëpërmjet  ) si një adresë memorie, në krahasim me një cookie magjike ose aftësi që nuk e lejon këtë. [ citim i nevojshëm ] Për shkak se pointerat lejojnë qasje të mbrojtur dhe të pambrojtur në adresat e memories, ka rreziqe që lidhen me përdorimin e tyre, veçanërisht në rastin e fundit. Pointerat primitivë shpesh ruhen në një format të ngjashëm me një numër të plotë ; megjithatë, përpjekja për të dereferencuar ose "kërkuar" një tregues të tillë, vlera e të cilit nuk është një adresë e vlefshme memorie, mund të shkaktojë që një program të përplaset (ose të përmbajë të dhëna të pavlefshme). Për të zbutur këtë problem të mundshëm, për sa i përket sigurisë së tipit, pointerat konsiderohen si një lloj i veçantë i parametrizuar nga lloji i të dhënave ku ata shënojnë, edhe nëse paraqitja bazë është një numër i plotë. Mund të merren gjithashtu masa të tjera (si verifikimi dhe kontrolli i kufijve ), për të verifikuar që ndryshorja e treguesit përmban një vlerë që është njëkohësisht një adresë e vlefshme memorie dhe brenda intervalit numerik që procesori është në gjendje të adresojë.

Remove ads
Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads