Industriële fabricage
Industrieel internet der dingen | Industriële materialen | Onderhoud en reparatie van apparatuur | Industriële programmering |
home  MfgRobots >> Industriële fabricage >  >> Industrial programming >> C Taal

C - Aanwijzers

Aanwijzers in C zijn gemakkelijk en leuk om te leren. Sommige C-programmeertaken kunnen gemakkelijker worden uitgevoerd met aanwijzers en andere taken, zoals dynamische geheugentoewijzing, kunnen niet worden uitgevoerd zonder aanwijzers te gebruiken. Het wordt dus noodzakelijk om aanwijzingen te leren om een ​​perfecte C-programmeur te worden. Laten we ze in eenvoudige en gemakkelijke stappen leren.

Zoals u weet, is elke variabele een geheugenlocatie en heeft elke geheugenlocatie een bepaald adres dat toegankelijk is met de ampersand-operator (&), die een adres in het geheugen aangeeft. Beschouw het volgende voorbeeld, dat het adres van de gedefinieerde variabelen afdrukt −

Live demo
#include <stdio.h>

int main () {

   int  var1;
   char var2[10];

   printf("Address of var1 variable: %x\n", &var1  );
   printf("Address of var2 variable: %x\n", &var2  );

   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Address of var1 variable: bff5a400
Address of var2 variable: bff5a3f6

Wat zijn aanwijzers?

Een aanwijzer is een variabele waarvan de waarde het adres is van een andere variabele, d.w.z. het directe adres van de geheugenlocatie. Zoals elke variabele of constante, moet u een aanwijzer declareren voordat u deze gebruikt om een ​​variabel adres op te slaan. De algemene vorm van een pointervariabeledeclaratie is −

type *var-name;

Hier, typ is het basistype van de aanwijzer; het moet een geldig C-gegevenstype zijn en var-name is de naam van de pointervariabele. Het sterretje * dat wordt gebruikt om een ​​aanwijzer te declareren, is hetzelfde sterretje dat wordt gebruikt voor vermenigvuldiging. In deze verklaring wordt de asterisk echter gebruikt om een ​​variabele als pointer aan te duiden. Bekijk enkele van de geldige pointerverklaringen −

int    *ip;    /* pointer to an integer */
double *dp;    /* pointer to a double */
float  *fp;    /* pointer to a float */
char   *ch     /* pointer to a character */

Het werkelijke gegevenstype van de waarde van alle aanwijzers, of het nu integer, float, karakter of anderszins is, is hetzelfde, een lang hexadecimaal getal dat een geheugenadres vertegenwoordigt. Het enige verschil tussen aanwijzers van verschillende gegevenstypen is het gegevenstype van de variabele of constante waarnaar de aanwijzer verwijst.

Hoe gebruik ik aanwijzers?

Er zijn een paar belangrijke bewerkingen, die we heel vaak zullen doen met behulp van aanwijzingen. (a) We definiëren een pointervariabele, (b) wijs het adres van een variabele toe aan een aanwijzer en (c) eindelijk toegang tot de waarde op het adres dat beschikbaar is in de aanwijzervariabele. Dit wordt gedaan met behulp van de unaire operator * die de waarde retourneert van de variabele die zich op het adres bevindt dat is opgegeven door de operand. Het volgende voorbeeld maakt gebruik van deze bewerkingen −

Live demo
#include <stdio.h>

int main () {

   int  var = 20;   /* actual variable declaration */
   int  *ip;        /* pointer variable declaration */

   ip = &var;  /* store address of var in pointer variable*/

   printf("Address of var variable: %x\n", &var  );

   /* address stored in pointer variable */
   printf("Address stored in ip variable: %x\n", ip );

   /* access the value using the pointer */
   printf("Value of *ip variable: %d\n", *ip );

   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

Address of var variable: bffd8b3c
Address stored in ip variable: bffd8b3c
Value of *ip variable: 20

NULL-wijzers

Het is altijd een goede gewoonte om een ​​NULL-waarde toe te wijzen aan een pointervariabele voor het geval u geen exact adres kunt toewijzen. Dit wordt gedaan op het moment van variabele declaratie. Een aanwijzer waaraan NULL is toegewezen, wordt een null . genoemd aanwijzer.

De NULL-aanwijzer is een constante met een waarde van nul gedefinieerd in verschillende standaardbibliotheken. Beschouw het volgende programma −

Live demo
#include <stdio.h>

int main () {

   int  *ptr = NULL;

   printf("The value of ptr is : %x\n", ptr  );
 
   return 0;
}

Wanneer de bovenstaande code wordt gecompileerd en uitgevoerd, levert dit het volgende resultaat op −

The value of ptr is 0

In de meeste besturingssystemen hebben programma's geen toegang tot geheugen op adres 0 omdat dat geheugen is gereserveerd door het besturingssysteem. Het geheugenadres 0 heeft echter een speciale betekenis; het geeft aan dat de aanwijzer niet bedoeld is om naar een toegankelijke geheugenlocatie te wijzen. Maar volgens afspraak, als een aanwijzer de null-waarde (nul) bevat, wordt aangenomen dat deze naar niets wijst.

Om te controleren op een null-pointer, kunt u als volgt een 'if'-statement gebruiken −

if(ptr)     /* succeeds if p is not null */
if(!ptr)    /* succeeds if p is null */

Aanwijzingen in detail

Pointers hebben veel, maar eenvoudige concepten en ze zijn erg belangrijk voor C-programmering. De volgende belangrijke pointerconcepten moeten duidelijk zijn voor elke C-programmeur −

Sr.nr. Concept en beschrijving
1 Aanwijzer rekenkunde

Er zijn vier rekenkundige operatoren die in pointers kunnen worden gebruikt:++, --, +, -

2 Array van pointers

U kunt arrays definiëren die een aantal pointers bevatten.

3 Aanwijzer naar aanwijzer

Met C kun je een aanwijzer op een aanwijzer zetten, enzovoort.

4 Aanwijzers doorgeven aan functies in C

Door een argument door te geven via een verwijzing of door een adres, kan het doorgegeven argument in de aanroepende functie worden gewijzigd door de aangeroepen functie.

5 Retouraanwijzer van functies in C

Met C kan een functie een aanwijzer terugsturen naar de lokale variabele, statische variabele en ook dynamisch toegewezen geheugen.


C Taal

  1. C Variabelen, constanten en literalen
  2. C opslagklasse
  3. C-aanwijzers
  4. Relatie tussen arrays en pointers
  5. C Pass-adressen en -wijzers
  6. C-structuren en aanwijzers
  7. Algemeen Python-sleutelwoord
  8. C++-aanwijzers met voorbeelden
  9. C Variabele, gegevenstypen, constanten
  10. Pointers in C:Wat is Pointer in C-programmering? Soorten
  11. Verilog-opdrachten