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 merci
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 struct date { int jour,mois,annee; }var_date;








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 merci
Code C : Sélectionner tout - Visualiser dans une fenêtre à part
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
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+








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 merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8struct 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.
Thierry
Code : Sélectionner tout - Visualiser dans une fenêtre à part liste *variable -> liste(valeur = 10, suivant--)---> liste(valeur = 20, suivant--)---> ...
"The most important thing in the kitchen is the waste paper basket and it needs to be centrally located.", Donald Knuth
"If the only tool you have is a hammer, every problem looks like a nail.", probably Abraham Maslow
FAQ-Python FAQ-C FAQ-C++
+
Voici une structure, c'est à dire une caisse où se trouve dedans les informations concernant une date.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 :qui peut m'explique le role de la variable var_deta? et merci
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 var_date.jour = 17; var_date.mois = 4; var_date.annee = 2008;
au lieu de :
on écrit :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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 : Sélectionner tout - Visualiser dans une fenêtre à part
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.
Partager