Les structures en langage C

Fermé
Laoko Messages postés 1 Date d'inscription vendredi 24 octobre 2008 Statut Membre Dernière intervention 24 octobre 2008 - 24 oct. 2008 à 05:08
mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 - 24 oct. 2008 à 13:42
Bonjour,
je suis un etudiant en genie mecanique et j'ai module d'informatique concernant la programmation en C.j'ai un projet sur les etructures.je voudrais solliciter votre aide pour me permettre de bien comprendre et pourvoir realiser mon projet,je voudrais vous demander un exercice et son corrigé sur les structures.merci pour votre comprehension.

1 réponse

mamiemando Messages postés 33077 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 18 avril 2024 7 748
24 oct. 2008 à 13:42
Pour ce qui est de trouver des exercices en C, le plus simple c'est de chercher directement sur google, tu es le mieux placé pour trouver des exercices qui correspondent à ton niveau.

En soit, une structure en C peut être vue comme un objet qui regroupe un ensemble d'objet (soit d'autre structures, soit des types de bases comme des int). Exemple :
struct pouet_t{
  int a,b;
  float x;
};

struct plop_t{
  struct pouet_t p;
  int *y;
}

Afin de distinguer facilement les variables des types, je te conseille de rajouter un "_t" à la fin des types que tu définis (ici plop_t et pouet_t).

En mémoire, une structure a pour taille la somme des tailles des objets qu'elle regroupe. Par exemple sizeof(struct pouet_t) = sizeof(int) + sizeof(int) + sizeof(float). C'est pour ça que les types intervenant dans la définition d'une structure doivent être de type connu (c'est à dire soit une structure définie au préalable, soit un type de base, soit un pointeur sur une structure éventuellement pas encore définie).

Pour accéder au champ d'une structure, on utilise l'opérateur ".". Par exemple, si j'ai une structure plop (de type struct plop_t) et une structure pouet (de type struct pouet_t) je peux accéder à pouet.a ; pouet.b ; plop.p ; plop.p.a).

Supposons que j'ai à présent un pointeur pplop (type struct plop_t *) et un pointeur ppouet (type struct pouet_t *) alors je peux écrire *pouet.a (ie (*ppouet).a) ou directement pouet->a. De même je peux écrire (*pplop).p.a ou pplop->p.a.

En espérant que c'est plus clair pour toi,
bonne chance
2