Structures et pointeurs C (avec des exemples)

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

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

  • Pointeurs C
  • C struct

C pointeurs vers struct

Voici comment 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 du pointeur

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

 #include 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:"); printf("Age: %d", personPtr->age); printf("weight: %f", personPtr->weight); return 0; )

Dans cet exemple, l'adresse de person1 est stockée dans le pointeur personPtr à l'aide de personPtr = &person1;.

Maintenant, vous pouvez accéder aux membres de person1 à l'aide du personPtrpointeur.

Au fait,

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

Allocation de 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 struct que vous avez déclaré 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 de mémoire dynamique de structures

 #include #include 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 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:"); for(i = 0; i name, (ptr+i)->age); return 0; ) 

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

 Entrez le nombre de personnes: 2 Entrez respectivement le prénom et l'âge: Harry 24 Entrez le prénom et l'âge respectivement: Gary 32 Affichage des informations: Nom: Harry Âge: 24 Nom: Gary Âge: 32

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

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

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

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

Articles intéressants...