Een van de functies die C maakt zo'n krachtige programmeertaal is de mogelijkheid voor programmeurs om toegang te krijgen tot het geheugen direct met pointers . Pointers worden veel gebruikt voor de behandeling van C arrays , manipuleren tekenreeksen , langs de functies en parameters maken gelinkte lijsten en andere complexe gegevensstructuren . Pointers zijn een van de grootste bronnen van verwarring voor programmeurs nieuw voor de C taal . Begrijpen en gebruiken van pointers is cruciaal voor effectieve C programmeren . Pointer wijzer : zorg op te ruimen ! Functie Een pointer object , of eenvoudig pointer is een variabele die een geheugenadres van een object , zoals een struct of float , of een array van objecten , is bevat opgeslagen . Met dat geheugen -adres , kan de programmeur lezen , wijzigen en verplaatsen door het geheugen met behulp van een pointer . Voordelen Functies dat een pointer naar een externe object doorgegeven als een parameter kan dat object wijzigen . Wanneer de functie verlaat , wordt de nieuwe waarde toegewezen aan die object bestaan . Een functie kan meerdere pointers nemen , waardoor een functie meerdere objecten te wijzigen met een enkele functie oproep . Pointer kan gebruikt worden om systematisch of willekeurig navigeren door een reeks elementen met behulp van matrix notatie , iteratie of basismath . Gebruik van pointers om toegang array is sneller dan de meer ingewikkelde implementaties van vergelijkbare functionaliteit die in andere talen . Terwijl dergelijke implementaties zijn vaak gemakkelijker te gebruiken en fouten te voorkomen , is er extra overhead die de prestaties beïnvloedt . Belang De mogelijkheid om willekeurige hoeveelheden heapgeheugen tijdens dynamisch toewijzen runtime is een techniek genaamd " dynamisch toewijzen van geheugen . " Veel eerder talen , zoals Fortran , vereist de hoeveelheid geheugen toegewezen voor structuren zoals arrays tijdens het compileren te stellen , en de hoeveelheid geheugen toegewezen kan niet tijdens de uitvoering van het programma worden gewijzigd . Pointers worden gebruikt in C om het adres van dynamisch toegewezen geheugen te houden . Gebruik Een pointer wordt verklaard door het plaatsen van een ster ( * ) tussen de naam van het type en de variabele naam . de waarde van een object in het geheugen op het adres in het bezit van de aanwijzer wordt geopend door " dereferentie " de aanwijzer . . Dereferentie een pointer wordt gedaan door een sterretje ( * ) voor de naam aanwijzer Bij het hanteren van pointers naar structs , wordt een lid van de struct verwezen door middel van een pijl ( - > ) tussen de naam en de aanwijzer het lid naam . het adres van een object kan worden benaderd door het plaatsen van een ampersand ( & ) vóór variabele naam van het object . Passeren adres van een object naar een functie heet "pass door verwijzing . " De parameter wordt aangegeven als een pointer in de functie prototype . De functie dereferences de parameter om de waarde ervan te wijzigen , en de waarde zal blijven bestaan als de functie verlaat . Arrays worden gecreëerd door de verdeling van de hoeveelheid geheugen die nodig is om het gewenste aantal objecten van een bepaald type te houden . Dit wordt bereikt tijdens of na de verklaring met pointer notatie en malloc of calloc , of tijdens de aangifte met behulp van array- notatie . Elementen van een array kan worden benaderd met behulp van index verwijzing notatie of door het itereren de array pointer. Iteratie automatisch verhoogt of verlaagt de toespraak van de omvang van een individueel element , zodat de wijzer correct gepositioneerd aan het begin van het volgende of vorige element . Waarschuwing Memory toewijzing en vrijmaken wordt beheerd door de programmeur . Geheugen dat is toegewezen worden deallocated wanneer deze niet meer nodig . Niet om het geheugen vrijgeven voorkomt dat het wordt gebruikt totdat de applicatie verlaat . Een " geheugenlek " treedt op wanneer een verwijzing naar de toegewezen geheugen is verloren zonder eerst het geheugen vrijmaken . Geheugenlekken kan gebeuren als een pointer wordt toegewezen , of een functie verlaten zonder delegeren eigendom van de toegewezen geheugen . Toegang tot het geheugen na het einde van de toegewezen geheugen is een veel voorkomende fout bij het werken met arrays . Deze fout wordt genoemd met een " matrix index out of bounds . " Dit kan ertoe leiden dat de aanvraag om verkeerd te gedragen of te verlaten onverwacht .
|