Avhengig av hvem du spør, pekere er enten en velsignelse eller en forbannelse . Pekere gir en mekanisme for direkte tilgang til og endrer objekter og kode i minnet . Pekere brukes i mange programmeringsspråk for å manipulere tegnstrenger , sende parametere til funksjoner , håndtering matriser av data , og opprette koblede lister og andre komplekse datastrukturer . Mens tips du gir med en stor grad av fleksibilitet for å håndtere minne og optimalisere algoritmer , det er ulemper . Lære å bruke pekere er vanskelig for mange programmerere , og debugging pekeren problemer er utfordrende. Optimalisering
pekere gi en ytelse fordel ved at du kan få tilgang til datamaskinens minne direkte. I et dataprogram , er den raskeste måten å få tilgang til og endre et objekt til å få direkte tilgang til fysisk minne der objektet er lagret. Denne teknikken er vanligvis brukes til å optimalisere algoritmer som krever hyppig eller gjentakende tilgang til store mengder data .
Security
Direkte tilgang til minnet betyr at du kan gjøre ting som kanskje du bør ikke. Avhengig av språket , kompilatoren og datamaskinen plattform, kan du utilsiktet (eller vilje) access memory som ikke er ditt for å få tilgang . Som et resultat, kan du overskrive kritisk minne, modifisere koden til et program som kjører , eller føre til at programmet eller et annet program til å oppføre seg eller avslutte uventet . En vanlig feil er å kjøre forbi slutten av en matrise, tilgang til minne utover slutten av plassen avsatt til denne matrisen .
Memory Management
administrerende minnebruk i et program ved hjelp av pekere gir fleksibilitet , men er også et ork . Tildeling og deallocating minne etter behov under kjøring lar deg lage store objekter, for eksempel tabeller , raskt og umiddelbart frigjøre minne når det ikke lenger er nødvendig . Imidlertid er det også enkelt å lage minne lekkasjer ved å tilordne en peker uten å frigjøre minnet det peker til først. Søppelrydding er ditt ansvar .
Funksjonsparametre
Funksjoner kan returnere bare én verdi , men de kan ta flere parametere . Ved bestått i pekere til variabler som parametre , kan en funksjon brukes til å angi verdiene av disse variablene , og de nye verdiene vil vedvare etter at funksjonen returnerer. Å kunne sette verdien av flere variabler samtidig med en enkelt funksjon samtale er ren og effektiv. Men det kan være litt forvirrende å lese fordi du ikke kan fortelle om variablene gått i vil bli modifisert eller ikke bare ved å se på funksjonen samtalen. Du må se på funksjonen dokumentasjon for å lære hvordan funksjonen oppfører
funksjonspekere
pekere er ikke bare for objekter i minnet ; . De kan også brukes for funksjoner , og dermed gir en funksjon som skal sendes som en parameter til en annen funksjon . En funksjon pekeren kan programmeres med den adressen til en av et utvalg av funksjoner , slik at pekeren fungerer som en slags alias. Objektorientert programmeringsspråk har eliminert behovet for funksjonspekere med arv og polymorfisme .
Pointer Forvirring
Pekere er et forvirrende tema for mange programmerere , særlig de opplevde i bruker språk som ikke funksjonen pekere og Direct Memory Access . Imidlertid fører utholdenhet raskt til mestring av pekere . Pekere er ofte ledsaget av obskure syntaks. Konsekvent variable navnekonvensjonene kan hjelpe din kode bli mer lesbar . For eksempel vanlige navnekonvensjonene inkluderer bruk " P_ " eller " ptr_ " som prefiks for pekeren variabelnavn.
Tips
Bruk alltid tildeling funksjonene som tilbys av språk for tildeling minne, og kontroller at minnet ble tildelt før du bruker den . Vær forsiktig med minnehåndtering , og frigjøre minne når det ikke lenger er nødvendig . Hvis du tildeler en peker til et nytt minne adresse , sørg for det gamle minnet er frigjort eller overdras til en annen peker. Sørg for at pekere opprettet i funksjoner er tildelt eierskap til den overordnede omfang eller at minnet er blitt frigitt før du avslutter funksjonen .