Fordele & amp ;Ulemper ved Pointers

Afhængig af hvem du spørger, pointers er enten en velsignelse eller en forbandelse.Pegepinde etablere en mekanisme for direkte adgang til og ændre objekter og kode i hukommelsen.Pointers anvendes i mange programmeringssprog til at manipulere tegnstrenge, der passerer parametre til funktioner, håndtering arrays af data og skabe hægtede lister og andre komplekse datastrukturer.Mens pointers give dig en stor fleksibilitet til administration af hukommelse og optimere algoritmer, der er ulemper.At lære at bruge pegepinde er svært for mange programmører, og debugging pointer problemer er udfordrende.

Optimering

  • Pointers give en performance fordel ved at tillade dig at få adgang til computerens hukommelse direkte.I et computerprogram, den hurtigste måde at få adgang til og ændre et objekt er at få direkte adgang til fysisk hukommelse, hvor objektet er gemt.Denne teknik er almindeligt anvendt til at optimere algoritmer kræver hyppig eller gentagne adgang til store mængder data.

Security

  • Direkte adgang til hukommelsen betyder, at du kan gøre ting, som måske skal du ikke.Afhængigt af sproget, compiler og computeren platform, kunne du utilsigtet (eller bevidst) access memory, der ikke er din at få adgang.Som et resultat, kan du overskrive kritiske hukommelse, ændre koden for et kørende program, eller få din ansøgning eller et andet program til at opføre sig eller afslutte uventet.En almindelig fejl er at køre forbi slutningen af ​​et array, adgang til hukommelse ud over enden af ​​rummet er tildelt for dette array.

Memory Management

  • Håndtering hukommelsesforbrug i et program ved hjælp af pegepinde giver fleksibilitet, men er også en opgave.Fordeling og deallocating hukommelse som nødvendigt under køretid giver dig mulighed for at skabe store objekter, såsom arrays, hurtigt og straks frigøre hukommelsen, når det ikke længere er nødvendig.Det er imidlertid også let at skabe hukommelseslækager ved omfordeling en pointer uden at frigøre hukommelse det pegede på først.Renovation er dit ansvar.

Funktion Parametre

  • funktioner kan returnere én værdi, men de kan tage flere parametre.Ved at passere i henvisninger til variabler som parametre, kan en funktion bruges til at indstille værdier for disse variabler, og de nye værdier vil fortsætte efter funktionen returnerer.At være i stand til at indstille værdien af ​​flere variable på én gang med en enkelt funktion opkald er ren og effektiv.Dog kan det være lidt forvirrende at læse, fordi du ikke kan fortælle, hvis de gik i variabler vil blive ændret eller ikke blot ved at se på funktionen opkald.Du bliver nødt til at se på funktionen dokumentationen for at lære, hvordan funktionen opfører sig.

Funktion Pointers

  • Pointers er ikke kun for objekter i hukommelsen;de kan også anvendes til funktioner, således at en funktion skal videregives som en parameter til en anden funktion.En funktion pointer kan tildeles adressen på en af ​​et udvalg af funktioner, så markøren fungerer som en slags alias.Objektorienterede programmeringssprog har elimineret behovet for funktionspointere med arv og polymorfi.

Pointer Forvirring

  • Pegepinde er en forvirrende emne for mange programmører, især dem med erfaring i brug af sprog, der ikke funktionen pointers og direkte adgang hukommelse.Men vedholdenhed fører hurtigt til beherskelse af pointere.Pointers er ofte ledsaget af obskure syntaks.Konsekvent variable navnekonventioner kan hjælpe din kode være mere læsbar.For eksempel omfatter fælles navnekonventioner ved hjælp af "p " eller "PTR " som præfiks for at pointer variabelnavne.

Tips

  • Brug altid de bevillings- funktioner, som sproget for hukommelse tildeling, og kontroller, at den hukommelse, blev tildelt før du bruger den.Vær forsigtig med hukommelse ledelse, og frigøre hukommelse, når det ikke længere er nødvendig.Hvis De tildeler en pointer til en ny hukommelse adresse, så sørg for den gamle hukommelse frigøres eller overføres til en anden pegepind.Sørg for, at pointere oprettet i funktioner er tildelt ejerskab til det overordnede omfang eller at hukommelsen er deallokeret før du afslutter funktionen.

Ressourcer

  • Stanford CS Uddannelse Bibliotek: Pointers og Memory
  • Cprogramming.com: En introduktion til Pointers
  • Pointer Eksempler
901
0
2
Computer Programmeringssprog