Pointers in C Programming met voorbeelden
Een pointer is een variabele die het adres van een andere variabele opslaat. In tegenstelling tot andere variabelen die waarden van een bepaald type bevatten, bevat pointer het adres van een variabele. Een integer-variabele bevat bijvoorbeeld (of je kunt zeggen slaat op) een integer-waarde, maar een integer-pointer bevat het adres van een integer-variabele. In deze gids zullen we pointers in C-programmering bespreken aan de hand van voorbeelden.
Voordat we pointers in C bespreken, laten we een eenvoudig voorbeeld nemen om te begrijpen wat we bedoelen met het adres van een variabele.
Een eenvoudig voorbeeld om te begrijpen hoe je toegang kunt krijgen tot het adres van een variabele zonder verwijzingen?
In dit programma hebben we een variabel aantal van het int-type. De waarde van num is 10 en deze waarde moet ergens in het geheugen worden opgeslagen, toch? Voor elke variabele die de waarde van die variabele bevat wordt een geheugenruimte toegewezen, deze geheugenruimte heeft een adres. We wonen bijvoorbeeld in een huis en ons huis heeft een adres, waardoor andere mensen ons huis kunnen vinden. Op dezelfde manier als de waarde van de variabele wordt opgeslagen in een geheugenadres, wat het C-programma helpt om die waarde te vinden wanneer het nodig is.
Laten we zeggen dat het adres dat is toegewezen aan variabele num 0x7fff5694dc58
, wat betekent dat elke waarde die we aan num toewijzen, moet worden opgeslagen op de locatie: 0x7fff5694dc58
. Zie het onderstaande diagram.
Uitvoer:
Value of variable num is: 10Address of variable num is: 0x7fff5694dc58
Een eenvoudig voorbeeld van pointers in C
Dit programma laat zien hoe een pointer wordt gedeclareerd en gebruikt. Er zijn verschillende andere dingen die we kunnen doen met aanwijzingen, we hebben ze later in deze gids besproken. Voorlopig hoeven we alleen maar te weten hoe we een pointer aan het adres van een variabele kunnen koppelen.
Belangrijk om op te merken is: het gegevenstype van de aanwijzer en de variabele moet overeenkomen, een int-pointer kan het adres van een int-variabele bevatten, op dezelfde manier kan een pointer die is gedeclareerd met het gegevenstype float het adres van een float-variabele bevatten. In het onderstaande voorbeeld zijn de pointer en de variabele beide van het type int.
Uitvoer:
Address of variable num is: 0x7fff5694dc58
C Pointers – Operators die worden gebruikt met Pointers
Laten we de operators & en * bespreken die worden gebruikt met Pointers in C.
“Adres van” (&) Operator
We hebben al in het eerste voorbeeld gezien dat we het adres van een variabele kunnen weergeven met een en-teken teken. Ik heb & num gebruikt om toegang te krijgen tot het adres van variabele num. De & operator is ook bekend als “Adres van” operator.
printf("Address of var is: %p", &num);
Let op:% p is een formaatspecificatie die wordt gebruikt om het adres in hexadecimaal formaat weer te geven.
Nu u weet hoe u het adres van een variabele, maar hoe sla je dat adres op in een andere variabele? Dat is waar aanwijzingen in beeld komen. Zoals vermeld in het begin van deze handleiding, worden pointers in C-programmering gebruikt om het adres van een andere variabele vast te houden.
Pointer is net als een andere variabele, het belangrijkste verschil is dat het het adres van een andere variabele opslaat in plaats van een waarde.
“Waarde op adres” (*) Operator
De * operator is ook bekend als Waarde op adres operator.
Hoe een pointer te declareren ?
Het bovenstaande zijn enkele voorbeelden van pointer-declaraties. Als je een pointer nodig hebt om het adres van de integer-variabele op te slaan, dan moet het datatype van de pointer int zijn. Hetzelfde geval is met de andere datatypes.
Door de * operator te gebruiken, hebben we toegang tot de waarde van een variabele via een pointer.
Bijvoorbeeld:
double a = 10;double *p;p = &a;
* p zou ons de waarde van de variabele a geven. De volgende instructie zou 10 als uitvoer weergeven.
printf("%d", *p);
Evenzo als we een waarde toekennen aan * pointer zoals deze:
*p = 200;
Het zou de waarde van v veranderen bebouwbaar a. De bovenstaande instructie verandert de waarde van a van 10 in 200.
Voorbeeld van Pointer die het gebruik van & en *
demonstreert :
Value of variable var is: 10Value of variable var is: 10Address of variable var is: 0x7fff5ed98c4cAddress of variable var is: 0x7fff5ed98c4cAddress of pointer p is: 0x7fff5ed98c50
Laten we nog een paar voorbeelden nemen om het beter te begrijpen –
Laten we zeggen dat we een char-variabele ch hebben en een pointer ptr die het adres van ch bevat.
char ch="a";char *ptr;
Lees de waarde van ch
printf("Value of ch: %c", ch);orprintf("Value of ch: %c", *ptr);
Verander de waarde van ch
ch = "b";or*ptr = "b";
De bovenstaande code zou de waarde a vervangen door b .
Kunt u de uitvoer van het volgende C-programma raden?
Uitvoer:
Address of var is: 0x7fff5d027c58Address of var is: 0x7fff5d027c58Value of var is: 10Value of var is: 10Value of var is: 10Value of pointer p is: 0x7fff5d027c58Address of pointer p is: 0x7fff5d027c50
Meer onderwerpen on Pointers
1) Pointer to Pointer – Een pointer kan naar een andere pointer wijzen (wat betekent dat hij het adres van een andere pointer kan opslaan), zulke pointers staan bekend als dubbele pointer OF pointer to pointer.
2) Pointers doorgeven aan een functie – Pointers kunnen ook worden doorgegeven als een argument aan een functie. Met deze functie kan een functie worden aangeroepen door middel van verwijzing en kan een array worden doorgegeven aan een functie tijdens het aanroepen.
3) Functie-aanwijzers – Een functie-aanwijzer is net als een andere aanwijzer, het wordt gebruikt om het adres van een functie op te slaan. Functiepointer kan ook worden gebruikt om een functie in C-programma aan te roepen.