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-structuren en aanwijzers

C-structuren en aanwijzers

In deze tutorial leer je om pointers te gebruiken om toegang te krijgen tot leden van structs in C-programmering. Je leert ook om het geheugen van structtypes dynamisch toe te wijzen.

Voordat je leert hoe aanwijzers kunnen worden gebruikt met structs, moet je deze tutorials bekijken:

  • C-aanwijzers
  • C-struct

C Pointers om te structureren

Hier leest u hoe u verwijzingen naar structs kunt maken.

struct name {
    member1;
    member2;
    .
    .
};

int main()
{
    struct name *ptr, Harry;
}

Hier, ptr is een verwijzing naar struct .


Voorbeeld:toegang krijgen tot leden met Pointer

Om toegang te krijgen tot leden van een structuur met behulp van pointers, gebruiken we de -> telefoniste.

#include <stdio.h>
struct person
{
   int age;
   float weight;
};

int main()
{
    struct person *personPtr, person1;
    personPtr = &person1;   

    printf("Enter age: ");
    scanf("%d", &personPtr->age);

    printf("Enter weight: ");
    scanf("%f", &personPtr->weight);

    printf("Displaying:\n");
    printf("Age: %d\n", personPtr->age);
    printf("weight: %f", personPtr->weight);

    return 0;
}

In dit voorbeeld is het adres van person1 wordt opgeslagen in de personPtr aanwijzer met personPtr = &person1; .

Nu heb je toegang tot de leden van person1 met behulp van de personPtr aanwijzer.

Trouwens,

  • personPtr->age is gelijk aan (*personPtr).age
  • personPtr->weight is gelijk aan (*personPtr).weight

Dynamische geheugentoewijzing van structs

Voordat u doorgaat met dit gedeelte, raden we u aan om de dynamische geheugentoewijzing van C te controleren.

Soms kan het aantal structvariabelen dat u hebt opgegeven onvoldoende zijn. Mogelijk moet u tijdens runtime geheugen toewijzen. Hier leest u hoe u dit kunt bereiken in C-programmering.

Voorbeeld:dynamische geheugentoewijzing van structs

#include <stdio.h>
#include <stdlib.h>
struct person {
   int age;
   float weight;
   char name[30];
};

int main()
{
   struct person *ptr;
   int i, n;

   printf("Enter the number of persons: ");
   scanf("%d", &n);

   // allocating memory for n numbers of struct person
   ptr = (struct person*) malloc(n * sizeof(struct person));

   for(i = 0; i < n; ++i)
   {
       printf("Enter first name and age respectively: ");

       // To access members of 1st struct person,
       // ptr->name and ptr->age is used

       // To access members of 2nd struct person,
       // (ptr+1)->name and (ptr+1)->age is used
       scanf("%s %d", (ptr+i)->name, &(ptr+i)->age);
   }

   printf("Displaying Information:\n");
   for(i = 0; i < n; ++i)
       printf("Name: %s\tAge: %d\n", (ptr+i)->name, (ptr+i)->age);

   return 0;
}

Wanneer u het programma uitvoert, is de uitvoer:

Enter the number of persons:  2
Enter first name and age respectively:  Harry 24
Enter first name and age respectively:  Gary 32
Displaying Information:
Name: Harry	Age: 24
Name: Gary	Age: 32

In het bovenstaande voorbeeld, n aantal structvariabelen wordt aangemaakt waarbij n wordt ingevoerd door de gebruiker.

Het geheugen toewijzen voor n aantal structeur , we gebruikten,

ptr = (struct person*) malloc(n * sizeof(struct person));

Vervolgens gebruikten we de ptr pointer voor toegang tot elementen van person .


C Taal

  1. C#-zoekwoorden en -ID's
  2. C# klasse en object
  3. C# abstracte klasse en methode
  4. C# Gedeeltelijke klasse en gedeeltelijke methode
  5. C# verzegelde klasse en methode
  6. C#-structuur
  7. C Trefwoorden en ID's
  8. C-aanwijzers
  9. Relatie tussen arrays en pointers
  10. C Pass-adressen en -wijzers
  11. C-structuur