Flux rss
Collection CommentÇaMarche.net
Bookmark Ajouter aux favoris / Partager

Différence entre une structure et un tableau

Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de type différent tels que des entiers et des chaînes de caractères.

Les structures permettent de remédier à cette lacune des tableaux, en regroupant des objets (des variables) au sein d'une entité repérée par un seul nom de variable.
Les objets contenus dans la structure sont appelés champs de la structure.

Déclaration d'une structure

Lors de la déclaration de la structure, on indique les champs de la structure, c'est-à-dire le type et le nom des variables qui la composent :

struct Nom_Structure {
	type_champ1 Nom_Champ1;

	type_champ2 Nom_Champ2;

	type_champ3 Nom_Champ3;

	type_champ4 Nom_Champ4;

	type_champ5 Nom_Champ5;

	...
};

La dernière accolade doit être suivie d'un point-virgule !
Merci à Stéphane, un visiteur, d'avoir signalé ce point !

  • Le nom des champs répond aux critères des noms de variable
  • Deux champs ne peuvent avoir le même nom
  • Les données peuvent être de n'importe quel type hormis le type de la structure dans laquelle elles se trouvent

Ainsi, la structure suivante est correcte :

struct MaStructure {
	int Age;

	char Sexe;

	char Nom[12];

	float MoyenneScolaire;

	struct AutreStructure StructBis;
/* en considérant que la structure AutreStructure est définie */
};

Par contre la structure suivante est incorrecte :


struct MaStructure {
	int Age;

	char Age;

	struct MaStructure StructBis;

};

Il y a deux raisons à cela :
  • Le nom de variable Age n'est pas unique
  • Le type de donnée struct MaStructure n'est pas autorisé

La déclaration d'une structure ne fait que donner l'allure de la structure, c'est-à-dire en quelque sorte une définition d'un type de variable complexe. La déclaration ne réserve donc pas d'espace mémoire pour une variable structurée (variable de type structure), il faut donc définir une (ou plusieurs) variable(s) structurée(s) après avoir déclaré la structure...

Définition d'une variable structurée

La définition d'une variable structurée est une opération qui consiste à créer une variable ayant comme type celui d'une structure que l'on a précédemment déclarée, c'est-à-dire la nommer et lui réserver un emplacement en mémoire.
La définition d'une variable structurée se fait comme suit :

struct Nom_Structure Nom_Variable_Structuree;

Nom_Structure représente le nom d'une structure que l'on aura préalablement déclarée.
Nom_Variable_Structuree est le nom que l'on donne à la variable structurée.

Il va de soi que, comme dans le cas des variables on peut définir plusieurs variables structurées en les séparant avec des virgules :

struct Nom_Structure Nom1, Nom2, Nom3, ...;

Soit la structure Personne :

struct Personne{
	int Age;

	char Sexe;

};
On peut définir plusieurs variables structurées :
struct Personne Pierre, Paul, Jacques;

Accès aux champs d'une variable structurée

Chaque variable de type structure possède des champs repérés avec des noms uniques. Toutefois le nom des champs ne suffit pas pour y accéder étant donné qu'ils n'ont de contexte qu'au sein de la variable structurée...
Pour accéder aux champs d'une structure on utilise l'opérateur de champ (un simple point) placé entre le nom de la variable structurée que l'on a défini et le nom du champ :

Nom_Variable.Nom_Champ;

Ainsi, pour affecter des valeurs à la variable Pierre (variable de type struct Personne définie précédemment), on pourra écrire :

Pierre.Age = 18;

Pierre.Sexe = 'M';

Tableaux de structures

Etant donné qu'une structure est composée d'éléments de taille fixe, il est possible de créer un tableau ne contenant que des éléments du type d'une structure donnée. Il suffit de créer un tableau dont le type est celui de la structure et de le repérer par un nom de variable :

struct Nom_Structure Nom_Tableau[Nb_Elements];

Chaque élément du tableau représente alors une structure du type que l'on a défini...
Le tableau suivant (nommé Repertoire) pourra par exemple contenir 8 variables structurées de type struct Personne :

struct Personne Repertoire[8];

De la même façon, il est possible de manipuler des structures dans les fonctions.

Dernière modification le mardi 14 octobre 2008 à 17:40:26.Ce document intitulé « Les structures en langage C » issu de Comment Ça Marche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.

Algorithme langage c et structure des données (Résolu) Bonjour, je ne trouve pas ou je puisse appliquer tout se que j'ai sur algorithme et langage c ainsi les structure des donnés svp je veux des exercices ainsi c est corrigées et des travaux pratiques et des mini projets corrigées merci d'avance www.commentcamarche.net/forum/affich-7335991-algorithme-langage-c-et-structure-des-donnees
Les structures en langage C Différence entre une structure et un tableau Un tableau permet de regrouper des éléments de même type, c'est-à-dire codés sur le même nombre de bits et de la même façon. Toutefois, il est généralement utile de pouvoir rassembler des éléments de... www.commentcamarche.net/contents/c/cstruct.php3
[Langage C] C/C++ Erreur de segmentationQu'est ce qu'une erreur de segmentation Vous êtes en train de développer une application sous Linux en C/C++. Tout va bien, ça compile, les oiseaux chantent. Donc vous lancez votre application pour la tester. Et vous obtenez l'un de ces deux... www.commentcamarche.net/faq/sujet-4791-langage-c-c-c-erreur-de-segmentation
Les files en langage CLes files - Premier Entré Premier Sorti Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la file IV. Opérations sur les files A. Initialisation B. Insertion d'un élément dans la file C. Oter un... www.commentcamarche.net/faq/sujet-8282-les-files-en-langage-c
Les piles en langage CLes piles Requis I. INTRODUCTION II. Définition III. La construction du prototype d'un élément de la pile IV. Opérations sur les piles A. Initialisation B. Insertion d'un élément dans la pile C. Ôter un élément de la pile D. Affichage... www.commentcamarche.net/faq/sujet-8283-les-piles-en-langage-c
Ouvrir une image avec le language c??Bonjour, je veux appliquer des traitement sur une image dans le language c à l'aide d'un algorithme(moyen mobile) et je n'arrive pas a l'ouvrir pour la représenter sous forme de pixel dans une structure de données adéquate ? www.commentcamarche.net/forum/affich-3974890-ouvrir-une-image-avec-le-language-c
Labyrinthe langage cBonjour, j'écris ce sujet car j'ai un programme de langage C à faire hors je débute. Le programme est en réalité un mini jeu qui consiste à créer un labyrinthe. Dans un premier temps j'aimerai avoir de l'aide pour créer "la structure". Le labyrinthe... www.commentcamarche.net/forum/affich-13007477-labyrinthe-langage-c
Exec en langage C (Résolu)Bonjour à tous. J'écris un programme en langage C permettant de créer un fichier de config (pour MRTG). Pour cela je dois utiliser la primitive "exec", la commande que je souhaite lancer ressemble à : snmpgetnext -c community IPadress OID. Comment "... www.commentcamarche.net/forum/affich-1623603-exec-en-langage-c
Langage C - Les variablesLe concept de variable Une variable est un objet repéré par son nom, pouvant contenir des données, qui pourront être modifiées lors de l'exécution du programme. Les variables en langage C sont typées, c'est-à-dire que les données contenues dans... www.commentcamarche.net/contents/c/cvar.php3
Les classes en langage C++La notion d'objet Le langage C est un langage procédural, c'est-à-dire que c'est un langage permettant de définir des données grâce à des variables, et des traitements grâce aux fonctions. L'apport principal du langage C++ par rapport au langage C... www.commentcamarche.net/contents/cpp/cppclass.php3
Langage C++ - Les types de donnéesLes types de données Les données manipulées en langage C++, comme en langage C, sont typées, c'est-à-dire que pour chaque donnée que l'on utilise (dans les variables par exemple) il faut préciser le type de donnée, ce qui permet de connaître... www.commentcamarche.net/contents/cpp/cpptype.php3