Afhankelijk van wie je het vraagt , pointers zijn ofwel een zegen of een vloek . Wijzers voorzien in een mechanisme voor directe toegang en wijzigen van objecten en code in het geheugen . Pointers worden gebruikt in vele programmeertalen voor het manipuleren van tekenreeksen , parameters doorgeven aan functies , omgaan met arrays van gegevens , en het creëren van gelinkte lijsten en andere complexe data structuren . Terwijl pointers bieden u een grote mate van flexibiliteit voor geheugenbeheer en optimaliseren algoritmen , zijn er nadelen . Leren om pointers te gebruiken is moeilijk voor veel programmeurs , en debuggen wijzer problemen is een uitdaging . Optimalisatie Pointers bieden een performance voordeel doordat u rechtstreeks toegang computergeheugen . In een computerprogramma , de snelste manier om toegang te krijgen tot en wijzigen van een object is om direct toegang te krijgen tot het fysieke geheugen waar dat object wordt opgeslagen . Deze techniek wordt vaak gebruikt om algoritmen vereisen frequente of herhaalde toegang tot grote hoeveelheden gegevens te optimaliseren . Beveiligingsupdate voor Directe toegang het geheugen betekent dat u dingen die misschien denk je moet niet. Afhankelijk van de taal , de compiler en het computerplatform , kon je onbedoeld ( of opzettelijk ) toegang geheugen dat niet van jou is om toegang te krijgen . Daardoor kon je kritische geheugen overschrijven , wijzigen van de code van een draaiende applicatie , of ervoor zorgen dat uw applicatie of een andere toepassing te gedragen of te verlaten onverwacht . Een veel voorkomende fout is om te draaien voorbij het einde van een array , de toegang tot het geheugen na het einde van de toegewezen ruimte voor die array . Memory Management Managing geheugengebruik in een toepassing met behulp van pointers biedt flexibiliteit , maar is ook een hele klus . Verdeling en loslaten en geheugen als nodig is tijdens runtime kunt u grote objecten , zoals arrays , snel en direct gratis het geheugen als het niet langer nodig te creëren . Echter , het is ook gemakkelijk om het geheugen lekken te creëren door herschikking van een pointer zonder het bevrijden van het geheugen werd wijzend naar eerste . Garbage collection is uw verantwoordelijkheid . Functie Parameters Functies kan slechts een waarde terug , maar ze kunnen meerdere parameters te nemen . Bij het passeren van pointers naar variabelen als parameters , kan een functie worden gebruikt om de waarden van die variabelen te stellen , en de nieuwe waarden worden na de functie terugkeert aanhouden . In staat zijn om in een keer de waarde van meerdere variabelen ingesteld met een enkele functie oproep is schoon en efficiënt . Echter , het kan een beetje verwarrend om te lezen omdat je niet kunt zien of de variabelen doorgegeven zal worden gewijzigd of niet gewoon door te kijken naar de functie oproep . Je zult moeten kijken naar de functie documentatie om te leren hoe de functie gedraagt Functie Pointers Pointers zijn niet alleen voor objecten in het geheugen ; . Ze kunnen ook gebruikt worden voor functies , waardoor een functie wordt doorgegeven als een parameter aan een andere functie . Een functie pointer kan het adres van een van een keuze van de functies worden toegewezen , zodat de aanwijzer fungeert als een soort alias . Objectgeoriënteerde programmeertalen hebben geëlimineerd de noodzaak voor de functie pointers met overerving en polymorfisme . Wijzer Verwarring Pointers zijn een verwarrend onderwerp voor veel programmeurs , met name die ervaren in met behulp van talen die niet pointers en directe geheugentoegang doen voorzien . Echter , persistentie leidt al snel tot beheersing van pointers . Pointers worden vaak begeleid door obscure syntax . Consistente variabele naamgeving kunnen helpen uw code leesbaarder . Bijvoorbeeld , gemeenschappelijke naamgeving zijn het gebruik van " p_ " of " ptr_ " als voorvoegsel om pointer variabele namen . Tips Gebruik altijd de functies toewijzing door de taal voor het toewijzen van geheugen , en controleer of het geheugen is voordat u het toegewezen . Wees voorzichtig met memory management , en geheugen vrij te maken als het niet meer nodig is . Als je een pointer opnieuw toewijzen aan een nieuwe geheugenkaart adres , zorg ervoor dat het oude geheugen wordt vrijgemaakt of toegewezen aan een andere aanwijzer . Zorg ervoor dat de pointers die in functies worden toegewezen eigendom aan de ouder reikwijdte of dat het geheugen wordt deallocated voordat de functie verlaten .
|