C++ Structure avec exemple

โšก Rรฉsumรฉ intelligent

Structure dans C++ est un type de donnรฉes dรฉfini par l'utilisateur qui regroupe des รฉlรฉments de diffรฉrents types de donnรฉes sous un seul nom, permettant ร  une variable de contenir ensemble des valeurs liรฉes telles que le nom d'une personne, sa citoyennetรฉ et son รขge.

  • ๐Ÿ“ฆ Diffรฉrents types de donnรฉes : Une structure regroupe des variables de types diffรฉrents sous un nom dรฉfini par l'utilisateur.
  • (I.e. mot-clรฉ de structure : Dรฉfinissez une structure avec le mot-clรฉ struct, puis listez les membres entre accolades.
  • ๐Ÿงฑ Crรฉation d'instances : L'instruction ยซ Person p ยป crรฉe une variable de type structure et alloue sa mรฉmoire.
  • (I.e. Opรฉrateur point : Lisez ou dรฉfinissez n'importe quel membre via l'instance, comme dans p.age = 27.
  • โžก๏ธ Pointeur et fonctions : Une structure fonctionne avec des pointeurs et est passรฉe ร  une fonction comme un argument ordinaire.
  • ๐Ÿค– Aide ร  l'IA : GitHub Copilot et d'autres assistants d'IA gรฉnรจrent des dรฉfinitions de structures et des accรจs aux membres ร  partir d'un commentaire.

C++ Structurer

Qu'est-ce qu'une structure dans C++?

Une STRUCT est une C++ structure de donnรฉes qui peut รชtre utilisรฉe pour stocker ensemble des รฉlรฉments de diffรฉrents types de donnรฉes. Dans C++Une structure est un type de donnรฉes dรฉfini par l'utilisateur. La structure crรฉe un type de donnรฉes pour le groupe.ping รฉlรฉments de types de donnรฉes diffรฉrents sous un seul type de donnรฉes.

Par exemple :

Supposons que vous ayez besoin de stocker des informations sur une personne, son nom, sa citoyennetรฉ et son รขge. Vous pouvez crรฉer des variables telles que le nom, la citoyennetรฉ et l'รขge pour stocker les donnรฉes sรฉparรฉment.

Cependant, vous pourriez avoir besoin de stocker des informations concernant de nombreuses personnes ร  l'avenir. Cela implique la crรฉation de variables pour chaque individu, par exemple : nom1, citoyennetรฉ1, รขge1, etc. Pour รฉviter cela, il est prรฉfรฉrable de crรฉer une structure.

Quand utiliser une Structure ?

Voici quelques raisons d'utiliser la structure dans C++.

  • Utilisez une structure lorsque vous devez stocker des รฉlรฉments de diffรฉrents types de donnรฉes sous un seul type de donnรฉes.
  • C++ les structures sont un type valeur plutรดt quโ€™un type rรฉfรฉrence. Utilisez une structure si vous n'avez pas l'intention de modifier vos donnรฉes aprรจs la crรฉation.

C++ Initialisation de la structure

Crรฉer un C++ structure, nous utilisons le mot-clรฉ struct, suivi d'un identifiant. L'identifiant devient le nom de la structure. Voici la syntaxe de crรฉation d'un C++ structure :

syntaxe:

struct struct_name  
{  
     // struct members
}   

Dans la syntaxe ci-dessus, nous avons utilisรฉ le mot-clรฉ struct. Le struct_name est le nom de la structure.

Les membres de la structure sont ajoutรฉs entre accolades. Ces membres appartiennent probablement ร  des types de donnรฉes diffรฉrents.

Par exemple :

struct Person  
{  
    char name[30];  
     int citizenship;  
     int age;  
}  

Dans lโ€™exemple ci-dessus, Person est une structure composรฉe de trois membres. Les membres incluent le nom, la citoyennetรฉ et lโ€™รขge. Un membre est de type de donnรฉes char, tandis que les 2 autres sont des entiers lorsqu'une structure est crรฉรฉe, la mรฉmoire n'est pas allouรฉe. La mรฉmoire n'est allouรฉe qu'aprรจs l'ajout d'une variable ร  la structure.

Crรฉation d'instances structurelles

Dans l'exemple ci-dessus, nous avons crรฉรฉ une structure nommรฉe Person. Nous pouvons crรฉer une variable struct comme suit :

Person p;

Le p est une variable structurรฉe de type Person. Nous pouvons utiliser cette variable pour accรฉder aux membres de la structure.

Accรฉder aux membres de la structure

Pour accรฉder aux membres de la structure, nous utilisons l'instance de la structure et l'opรฉrateur point (.). Par exemple, pour accรฉder ร  l'รขge des membres de struct Person :

p.age = 27;

Nous avons accรฉdรฉ ร  l'รขge des membres de struct Person en utilisant l'instance de struct, p. Nous avons alors fixรฉ la valeur de l'รขge du membre ร  27 ans.

Exemple 1:

#include <iostream>    
using namespace std;
struct Person
{
	int citizenship;
	int age;
};
int main(void) {
	struct Person p;
	p.citizenship = 1;
	p.age = 27;
	cout << "Person citizenship: " << p.citizenship << endl;
	cout << "Person age: " << p.age << endl;

	return 0;
}

Sortie :

Accรฉder aux membres de la structure

Voici une capture d'รฉcran du code :

Accรฉder aux membres de la structure

Code Explication:

  1. Incluez le fichier d'en-tรชte iostream dans notre programme pour utiliser les fonctions qui y sont dรฉfinies.
  2. Incluez l'espace de noms std pour utiliser ses classes sans l'appeler.
  3. Crรฉez une structure nommรฉe Person.
  4. Le dรฉbut du corps de la structure.
  5. Crรฉez un membre de structure nommรฉ citoyennetรฉ de type entier.
  6. Crรฉez un membre de structure nommรฉ age de type entier.
  7. Fin du corps de la structure.
  8. Appelez la fonction main(). La logique du programme doit รชtre ajoutรฉe dans le corps de cette fonction.
  9. Crรฉez une instance de la structure Person et donnez-lui le nom p.
  10. Dรฉfinissez la valeur de la citoyennetรฉ du membre struct sur 1.
  11. Dรฉfinissez la valeur de l'รขge du membre de la structure sur 27.
  12. Imprimez la valeur de la citoyennetรฉ du membre de la structure sur la console ร  cรดtรฉ d'un autre texte.
  13. Imprimez la valeur de l'รขge du membre de la structure sur la console ร  cรดtรฉ d'un autre texte.
  14. Le programme doit renvoyer une valeur s'il s'exรฉcute correctement.
  15. Fin de la fonction main().

Pointeurs vers la structure

Il est possible de crรฉer un pointeur qui pointe vers une structure. C'est similaire ร  la faรงon dont sont crรฉรฉs les pointeurs pointant vers des types de donnรฉes natifs comme int, float, double, etc. Notez qu'un pointeur dans C++ stockera un emplacement mรฉmoire.

Exemple 2:

#include <iostream>
using namespace std;

struct Length
{
	int meters;
	float centimeters;
};

int main()
{
	Length *ptr, l;

	ptr = &l;

	cout << "Enter meters: ";
	cin >> (*ptr).meters;
	cout << "Enter centimeters: ";
	cin >> (*ptr).centimeters;
	cout << "Length = " << (*ptr).meters << " meters " << (*ptr).centimeters << " centimeters";

	return 0;
}

Sortie :

Pointeurs vers la structure

Voici une capture d'รฉcran du code :

Pointeurs vers la structure

Code Explication:

  1. Incluez le fichier d'en-tรชte iostream dans notre programme afin d'utiliser ses fonctions.
  2. Incluez l'espace de noms std dans notre programme pour utiliser ses classes sans l'appeler.
  3. Crรฉez une structure nommรฉe Longueur.
  4. Dรฉbut du corps de la structure Longueur.
  5. Crรฉez un membre de structure nommรฉ mรจtres de type de donnรฉes entier.
  6. Crรฉez un membre de structure nommรฉ centimรจtres de type entier.
  7. Fin du corps de la structure Longueur.
  8. Appelez la fonction main().
  9. Dรฉbut du corps de la fonction main().
  10. Crรฉez une variable de pointeur *ptr et une variable normale l de type Longueur.
  11. Stocker l'adresse de la variable l dans notre variable de pointeur.
  12. Afficher un message sur la console demandant ร  l'utilisateur de saisir la valeur des compteurs variables.
  13. Lire la valeur saisie par l'utilisateur via le clavier. La fonction membre mรจtres est ici accessible ร  lโ€™aide de la variable pointeur.
  14. Afficher un message sur la console demandant ร  l'utilisateur de saisir la valeur des centimรจtres variables.
  15. Lire la valeur saisie par l'utilisateur via le clavier. La fonction membre centimรจtres est ici accessible ร  lโ€™aide de la variable pointeur.
  16. Affichez les valeurs lues par l'utilisateur sur la console ร  cรดtรฉ d'un autre texte.
  17. Le programme doit renvoyer une valeur en cas d'exรฉcution rรฉussie.
  18. Fin du corps de la fonction main().

Structure comme argument de fonction

Vous pouvez transmettre une structure ร  une fonction en tant qu'argument. Cela se fait de la mรชme maniรจre que pour passer un argument normal. Les variables struct peuvent รฉgalement รชtre transmises ร  une fonction. Un bon exemple est lorsque vous devez afficher les valeurs des membres de la structure. Dรฉmontrons ceci :

Exemple 3:

#include<iostream>
using namespace std;

struct Person
{
	int citizenship;
	int age;
};

void func(struct Person p);

int main()
{
	struct Person p;

	p.citizenship = 1;
	p.age = 27;

	func(p);
	return 0;
}
void func(struct Person p)
{
	cout << " Person citizenship: " << p.citizenship<<endl;
	cout << " Person age: " << p.age;
}

Sortie :

Structure comme argument de fonction

Voici une capture d'รฉcran du code :

Structure comme argument de fonction

Code Explication:

  1. Incluez le fichier d'en-tรชte iostream dans notre fichier. Nous utiliserons alors ses fonctions sans obtenir dโ€™erreurs.
  2. Incluez l'espace de noms std dans notre programme pour utiliser ses classes. Nous n'aurons pas besoin d'appeler l'espace de noms pour utiliser ses classes.
  3. Crรฉez une structure nommรฉe Person.
  4. Dรฉbut du corps de la structure Person.
  5. Crรฉez un membre de struct Person. Le membre est nommรฉ citoyennetรฉ et est de type entier.
  6. Crรฉez un membre de struct Person. Le membre est nommรฉ age et est de type entier.
  7. Fin du corps de struct Person.
  8. Crรฉez une fonction qui prend l'instance de struct Person, p, comme argument.
  9. Appelez la fonction principale. Le { marque le dรฉbut du corps de la fonction main().
  10. Crรฉez une instance de struct Person et donnez-lui le nom p.
  11. Accรฉdez ร  la variable membre de la structure citoyennetรฉ en utilisant l'instance de la structure, p, et en lui attribuant la valeur 1.
  12. Accรฉdez ร  la variable membre de la structure age en utilisant l'instance de la structure, p, et en lui attribuant la valeur 27.
  13. Appelez la fonction et passez-lui l'instance de la structure Person, p, comme argument.
  14. La fonction doit renvoyer une valeur en cas d'exรฉcution rรฉussie.
  15. Fin du corps de la fonction main().
  16. Crรฉez le corps de la fonction.
  17. Le dรฉbut du corps de la fonction.
  18. Accรฉdez ร  la valeur de citoyennetรฉ du membre struct et imprimez-la sur la console avec un autre texte.
  19. Accรฉdez ร  la valeur d'รขge du membre struct et imprimez-la sur la console avec un autre texte.
  20. Fin du corps de fonction.

Limitation d'un C++ structure

Voici les limites des structures :

  • Le type de donnรฉes struct ne peut pas รชtre traitรฉ comme des types de donnรฉes intรฉgrรฉs.
  • Operators comme + -, et d'autres ne peuvent pas รชtre utilisรฉs sur variables de structure.
  • Les structures ne prennent pas en charge le masquage des donnรฉes. Les membres d'une structure sont accessibles par n'importe quelle fonction quelle que soit sa portรฉe.
  • Les membres statiques ne peuvent pas รชtre dรฉclarรฉs ร  lโ€™intรฉrieur du corps de la structure.
  • Les constructeurs ne peuvent pas รชtre crรฉรฉs ร  l'intรฉrieur d'une structure.

FAQ

In C++ Une structure et une classe sont presque identiques. La seule diffรฉrence notable rรฉside dans l'accรจs par dรฉfaut : les membres d'une structure sont publics par dรฉfaut, tandis que ceux d'une classe sont privรฉs. Toutes deux prennent en charge les fonctions membres, les constructeurs et l'hรฉritage.

Une structure AC ne contient que des donnรฉes, et vous devez รฉcrire struct avant chaque dรฉclaration de variable. C++ Une structure peut รฉgalement inclure des fonctions membres, des constructeurs et des spรฉcificateurs d'accรจs, et le mot-clรฉ struct est facultatif lors de la dรฉclaration de variables.

Dรฉclarez la structure, puis dรฉfinissez un tableau de celle-ci, par exemple Person people[3]. Chaque รฉlรฉment est une structure complรจte, et vous accรฉdez ร  ses membres avec people[0].age. Les tableaux de structures permettent de stocker plusieurs enregistrements du mรชme type.

Une structure imbriquรฉe est une structure dรฉclarรฉe comme membre ร  l'intรฉrieur d'une autre structure. Elle regroupe des sous-donnรฉes liรฉes, comme une structure Date placรฉe ร  l'intรฉrieur d'une structure Employee. On accรจde aux membres internes en utilisant l'opรฉrateur point.

La taille correspond approximativement ร  la somme de ses membres, plus un remplissage ajoutรฉ par le compilateur pour l'alignement ; par consรฉquent, `sizeof` peut dรฉpasser la taille totale brute. Les fonctions membres n'ajoutent rien. Trier les membres par taille permet de rรฉduire le remplissage inutile.

Utilisez l'opรฉrateur flรจche lorsque vous tenez un pointeur vers une structure. Au lieu de `(*ptr).age`, le raccourci `ptr->age` permet d'accรฉder au mรชme membre. L'opรฉrateur point s'applique directement ร  l'instance, et non ร  un pointeur.

Oui. Les assistants de codage IA transforment une brรจve amorce ou un commentaire en un programme complet. C++ La structure, incluant les membres, les constructeurs et l'accรจs aux champs, doit toujours รชtre vรฉrifiรฉe. Il est important de contrรดler systรฉmatiquement les types de donnรฉes gรฉnรฉrรฉs et leur alignement, car l'IA peut ne pas prendre en compte certaines exigences spรฉcifiques au projet.

Oui. Copilote GitHub L'รฉditeur suggรจre les dรฉfinitions de structures, les variables membres et l'accรจs par point ou flรจche au fur et ร  mesure de votre saisie. Il gรจre bien le code rรฉpรฉtitif, mais il est toujours conseillรฉ de vรฉrifier les types, le remplissage et la logique avant la compilation.

Rรฉsumez cet article avec :