bonjour,j'ai pas compris la nnotion de structure en c.par exemple
qui peut m'explique le role de la variable var_deta? et merciCode:
1
2
3
4 struct date { int jour,mois,annee; }var_date;
Version imprimable
bonjour,j'ai pas compris la nnotion de structure en c.par exemple
qui peut m'explique le role de la variable var_deta? et merciCode:
1
2
3
4 struct date { int jour,mois,annee; }var_date;
La variable var_date est un objet regroupant plusieurs "sous-variables" qu'on nomme en général champs de la structure. Ainsi, var_date contient un champ jour (accessible via var_date.jour), un champ mois (accessible via var_date.mois) et un champ annee (accessible via var_date.annee).
Cette technique permet de structurer l'information en regroupant plusieurs variables liées en une seule.
Thierry
merci beaucoup
bonjour a tous j'ai une qst.
concernant modelisation de piles par listes chainees.
quel est le role de ces variables qui ont en rouge ?s'il vous une reponse complete et merciCode:
1
2
3
4
5
6
7
8 struct liste { int valeur; struct liste *suivant; }; main() { struct liste *l,*precedent,*nouveau;
Il s'agit de créer une structure par maillon de liste. Ainsi une liste est organisée comme une chaine de maillons (ou de noeuds) ordonnés où chaque élément est relié au suivant à l'aide du pointeur suivant.
ThierryCode:liste *variable -> liste(valeur = 10, suivant--)---> liste(valeur = 20, suivant--)---> ...
Voici une structure, c'est à dire une caisse où se trouve dedans les informations concernant une date.Code:
1
2
3
4
5
6 typedef struct _date{ unsigned int jour; unsigned int mois; unsigned int annee; }Date;
Exemple :
Possible aussi en "non-dynamique"Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14 int main(){ Date *d = NULL; d = (Date*)malloc(sizeof(Date)); if( d == NULL ){ fprintf(stderr, "ERROR: malloc Date *d\n"); return (EXIT_FAILURE); } d->jour = 17; d->mois = 4; d->annee = 2008; printf("DATE : %d / %d / %d\n", d->jour, d->mois, d->annee); return (EXIT_SUCCESS); }
Code:
1
2
3
4
5
6
7
8
9 int main(){ Date d; d.jour = 17; d.mois = 4; d.annee = 2008; printf("DATE : %d / %d / %d\n", d.jour, d.mois, d.annee); return (EXIT_SUCCESS); }
Cette variable stocke trois autres variables jour, mois et annee. Qui sont accessibles ainsi :Citation:
qui peut m'explique le role de la variable var_deta? et merci
Code:
1
2
3 var_deta.jour var_deta.mois var_deta.annee
C'est une variable de type structure. L'exemple que tu montres est techniquement possible, mais pas très facile à comprendre ni pratique à utiliser... De même, je déconseille de regrouper les définition de variables (ou de champs de structures) sur une seule ligne, sous prétexte que c'est techniquement possible. Il y a des dizaines de techniques possibles en C pour rendre le code incompréhensible et inmaintenanble. Ca ne veut pas dire qu'il faille les utiliser...
Il est d'usage, et pour de bonnes raisons, de séparer la définition de la structure de son ou ses instanciations :
Définition d'un structure 'date' formée des champs 'jour, 'mois et 'année' :
Définition d'un instance de la structure 'date' :Code:
1
2
3
4
5
6
7
8 /* definition */ struct date { int jour; int mois; int annee; };
Après, on peut initialiser chaque champs comme ceci :Code:
1
2
3 /* instanciation*/ struct date var_date;
Mais le plus intéressant est qu'on peut passer la structure (ou son adresse) en paramètre à une fonction, ce qui évite bien des complications de codage.Code:
1
2
3
4 var_date.jour = 17; var_date.mois = 4; var_date.annee = 2008;
au lieu de :
on écrit :Code:
1
2
3
4
5 void afficher_date (int jour, int mois, int annee) { printf ("%2d/%2d/%4d\n", jour, mois, annee); }
ce qui est correct mais un peu lourdingue sur le plan de l'exécution, car toute la structure est recopiée. C'est pour ça qu'on préfère une méthode plus légère qui consiste à ne passer que l'adresse de la structure :Code:
1
2
3
4
5 void afficher_date (struct date date) { printf ("%2d/%2d/%4d\n", date.jour, date.mois, date.annee); }
Enfin, le pointeur permettant la modification des données initiales, mais la fonction n'ayant aucune raison de modifier ces données, on le précise avec 'const' :Code:
1
2
3
4
5 void afficher_date (struct date *p_date) { printf ("%2d/%2d/%4d\n", p_date->jour, p_date->mois, p_date->annee); }
Voilà la forme la plus rationnelle possible de codage en C de cette fonction.Code:
1
2
3
4
5 void afficher_date (struct date const *p_date) { printf ("%2d/%2d/%4d\n", p_date->jour, p_date->mois, p_date->annee); }
http://emmanuel-delahaye.developpez....htm#structures
Pose des questions si tu ne comprends pas.