Cours Langage C: Types structurés et allocation dynamique

Extrait du cours Cours Langage C: Types structurés et allocation dynamique

Les structures

Objets regroupant plusieurs données appelées « champs » à définir hors d’une fonction définition:

struct nom {

type_champ1 nom_champ1;

type_champ2 nom_champ2;

..};

Les structures

Déclaration d’une variable:

struct nom_type nom_var;

accès aux champs: nom_var.nom_champ

struct complex {

double real;

double imaginary;

};

int main(int argc,char* argv[]) {

struct complex c;

c.real=1.2;

c.imaginary=6.3;

printf("%f+%f*i\n",c.real,c.imaginary);

return 0;

}

Choix des champs

On peut mettre tout ce dont le compilateur connaît la taille on ne peut donc pas mettre la structure elle-même:

struct list {

int value;

struct list next;

};

$>gcc -Wall -ansi struct.c

struct.c:7: champ « next » a un type incomplet

Structures récursives

Mais on peut mettre un pointeur sur la structure, car la taille des pointeurs est connue:

struct list {

int value;

struct list* next;

};

Imbrication de structures

Un champ peut être une structure:

struct id {

char firstname[MAX];

char lastname[MAX];

};

struct people {

struct id id;

int age;

};

int main(int argc,char* argv[]) {

struct people p;

strcpy(p.id.firstname,"Master");

strcpy(p.id.lastname,"Yoda");

p.age=943;

/* ... */

return 0;

}

Imbrication de structures

Structures peuvent s’appeler l’une l’autre, à condition d’utiliser des pointeurs:

struct state {

struct transition* t;

char final;

};

struct transition {

char letter;

struct state* dest;

struct transition* next;

};

……….

Si le lien ne fonctionne pas correctement, veuillez nous contacter (mentionner le lien dans votre message)
Cours Langage C: Types structurés et allocation dynamique (224 KO) (Cours PDF)
allocation dynamique

Télécharger aussi :

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *