Fabrication industrielle
Internet des objets industriel | Matériaux industriels | Entretien et réparation d'équipement | Programmation industrielle |
home  MfgRobots >> Fabrication industrielle >  >> Industrial programming >> Langue C

Structures C et pointeurs

Structures C et pointeurs

Dans ce didacticiel, vous apprendrez à utiliser des pointeurs pour accéder aux membres des structures en programmation C. Vous apprendrez également à allouer dynamiquement de la mémoire de types struct.

Avant d'apprendre comment les pointeurs peuvent être utilisés avec des structures, assurez-vous de consulter ces tutoriels :

Pointeurs C vers struct

Voici comment vous pouvez créer des pointeurs vers des structures.

struct name {
    member1;
    member2;
    .
    .
};

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

Ici, ptr est un pointeur vers struct .

Exemple :Accéder aux membres à l'aide de Pointer

Pour accéder aux membres d'une structure à l'aide de pointeurs, on utilise le -> opérateur.

#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;
}

Dans cet exemple, l'adresse de person1 est stocké dans personPtr pointeur utilisant personPtr = &person1; .

Maintenant, vous pouvez accéder aux membres de person1 en utilisant le personPtr pointeur.

Au fait,

  • personPtr->age est équivalent à (*personPtr).age
  • personPtr->weight est équivalent à (*personPtr).weight

Allocation mémoire dynamique des structures

Avant de poursuivre cette section, nous vous recommandons de vérifier l'allocation de mémoire dynamique C.

Parfois, le nombre de variables de structure que vous avez déclarées peut être insuffisant. Vous devrez peut-être allouer de la mémoire pendant l'exécution. Voici comment vous pouvez y parvenir en programmation C.

Exemple :Allocation dynamique de mémoire de structures

#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;
}

Lorsque vous exécutez le programme, la sortie sera :

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

Dans l'exemple ci-dessus, n nombre de variables de structure sont créées où n est saisi par l'utilisateur.

Pour allouer la mémoire pour n nombre de struct personne , nous avons utilisé,

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

Ensuite, nous avons utilisé le ptr pointeur pour accéder aux éléments de personne .


Langue C

  1. Mots-clés et identifiants C#
  2. Classe et objet C#
  3. Classe abstraite et méthode C#
  4. Classe partielle C# et méthode partielle
  5. Classe et méthode scellées C#
  6. Structure C#
  7. Mots-clés et identifiants C
  8. Pointeurs C
  9. Relation entre les tableaux et les pointeurs