Fordeler og ulemper av pekere

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 er brukt i mange programmeringsspråk for å manipulere tegnstrenger, sende parametere til funksjoner, håndtering matriser av data, og lage lenkede lister og andre komplekse datastrukturer. Mens pekere gi deg en stor grad av fleksibilitet for å håndtere minne og optimalisering av algoritmer, det er ulemper. Lære å bruke pekere er vanskelig for mange programmerere og feilretting peker problemer er utfordrende.

optimalisering

Pekere gi en ytelse fordel ved at du kan få tilgang til datamaskinens minne direkte. I et dataprogram, den raskeste måten å få tilgang til og endre et objekt er å få direkte tilgang til det fysiske minnet hvor objektet er lagret. Denne teknikken er ofte brukt for å optimalisere algoritmer krever hyppig eller gjentakende tilgang til store mengder data.

Sikkerhet

Direkte tilgang til minne betyr at du kan gjøre ting som kanskje du ikke burde. Avhengig av språket, kompilatoren og datamaskinen plattform, kan du utilsiktet (eller vilje) Access Memory som ikke er din for å få tilgang. Som et resultat, kan du overskrive kritisk minne, endre koden til et program som kjører, eller føre til at programmet eller et annet program for å 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.

Minnehåndtering

Administrerende minnebruken i et program som bruker pekere gir fleksibilitet, men er også et ork. Tildeling og deallocating minne som trengs under kjøring kan du lage store objekter, for eksempel arrays, raskt og umiddelbart frigjøre minne når det ikke lenger er nødvendig. Men det er også enkelt å lage minnelekkasjer ved å tilordne en peker uten å frigjøre minne den pekte på først. Søppelrydding er ditt ansvar.

funksjons~~POS=TRUNC

Funksjoner kan returnere bare en verdi, men de kan ta flere parametere. Ved bestått i pekere til variabler som parametere, kan en funksjon brukes til å sette verdiene av disse variablene, og de nye verdiene vil vedvare etter at funksjonen returnerer. Å kunne sette verdien av flere variabler samtidig med en enkel 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 endret eller ikke bare ved å se på funksjonskall. Du må se på funksjonen dokumentasjonen for å lære hvordan funksjonen oppfører seg.

funksjonspekere

Pekere er ikke bare for objekter i minne; 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 bli tildelt adressen til en av et utvalg av funksjoner slik at pekeren fungerer som en slags alias. Objektorienterte programmeringsspråk har eliminert behovet for funksjonspekere med arv og polymorfisme.

Pointer Confusion

Pekere er et forvirrende emne for mange programmerere, spesielt de som har erfaring med å bruke språk som ikke har pekere og direkte minnetilgang. Imidlertid fører utholdenhet raskt til mestring av pekere. Pekere er ofte ledsaget av obskure syntaks. Konsekvent variable navnekonvensjoner kan hjelpe koden din bli mer lesbar. For eksempel vanlige navnekonvensjoner inkluderer bruk "p" eller "PTR" som prefiks til pekeren variabelnavn.

Tips

Bruk alltid tildelings funksjonene som tilbys av språket for tildeling minne, og kontroller at minne 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 overfører en peker til en ny minneadresse, husk det gamle minnet er frigjort eller overdras til en annen pekeren. Sørg for at pekere opprettet i funksjoner er tildelt eierskap til den overordnede omfang eller at minnet er deallocated før du går ut av funksjon.