• STATISTIQUES
  • Il y a eu un total de 1 membres et 27360 visiteurs sur le site dans les dernières 24h pour un total de 27 361 personnes!


    Membres: 2 604
    Discussions: 3 579
    Messages: 32 816
    Tutoriels: 78
    Téléchargements: 38
    Sites dans l'annuaire: 58


  • ANNUAIRE
  • [EN] Rosecode
    Programming: 36, Math: 29, Probability: 5, Sequence: 7, Crypto: 4, Brainf**k: 13, TimeRace: 4, Hack: 9
    Challenges
    [FR] Infomirmo
    Challenge présenté sous la forme de 6 niveaux de difficultés diverses et variées avec chacun plusieurs chall...
    Challenges
    [EN] social-engineer
    Site dédié au Social Engineering en général.
    Hacking
    [FR] NewbieContest
    Nous vous proposons une série de challenges regroupant plusieurs domaines allant de l'exploitation de fail...
    Hacking
    [EN] hax.tor
    50 level de challenges mélangés
    Challenges
    [EN] Dare your mind
    JavaScript: 6, Crypto: 44, Stegano: 36, Logic: 13, Special: 27, Science: 11, Realistic: 7, Programming: 10, Crack It: 6,...
    Challenges
    [EN] CS Tutoring Center
    Site de challenge spécialisé dans les challenges de programmation C++ et java cependant, d'autres langages pe...
    Challenges

  • DONATION
  • Si vous avez trouvé ce site internet utile, nous vous invitons à nous faire un don du montant de votre choix via Paypal. Ce don servira à financer notre hébergement.

    MERCI!




Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
[C] Quand utiliser les structures ?
07-06-2014, 15h31
Message : #1
Ekroz Hors ligne
Membre actif
*



Messages : 77
Sujets : 13
Points: 43
Inscription : May 2013
[C] Quand utiliser les structures ?
Bonjour à toutes et à tous,

Voilà hier soir une question m'a un petit peu taraudé : quand utiliser les structures ?
Certains en abusent follement au point d'en mettre partout où il faut transmettre plus d'un paramètre à une fonction, d'autres y vont un peu au feeling, et d'autres suivent certaines normes propres à leur façon de coder.

Mais voilà, comme toute feature d'un langage de programmation, ce n'est jamais là par hasard, il y a des cas où c'est totalement inutile, d'autres indispensables.
En parcourant un peu notre ami Google, j'ai pu trouver beaucoup de sujets.
Notamment Microsoft qui préconise en C# d'utiliser les structures lorsque je cite :

Citation :Do not define a structure unless the type has all of the following characteristics:

It logically represents a single value, similar to primitive types (integer, double, and so on).
It has an instance size smaller than 16 bytes.
It is immutable.
It will not have to be boxed frequently.

Mais voilà il s'agit du C#, et de l'usage des strucutres à la place des classes.
Je n'ai pas la chance de posséder la bible du C de Dennis Ritchie sinon j'aurai feuilleté le chapitre le concernant, donc je vous pose la question, comment vous a-t-on appris à utiliser les structures ?

Ekroz.
+1 (0) -1 (0) Répondre
07-06-2014, 15h52
Message : #2
Junky Hors ligne
Snorky Master
*



Messages : 228
Sujets : 35
Points: 203
Inscription : Mar 2013
RE: [C] Quand utiliser les structures ?
Pour le coup j'ai appris tt seul et je suis loin de les gérer. Surtout les listes chainés par exemple . Souvent je ne les utilise pas et je passe par des fonction a WattMilles paramètres.

Ca reste un côté assez obscure, même si il faut avouer que c'est qd même vachement pratique.

J'avais fait à l'époque un topic sur les threads, qui employé une structure afin de pouvoir passer plusieurs paramètres a un thread car il me semble que pour ce cas, tu es obligé de passer par les structures.

Après je n'ai pas un grand lvl en C, et souvent mes codes n'en ont pas besoins, mais je serai aussi ravi que toi d'avoir des conseils avisés de nos Barbus préférés... Smile

Junky
Pour la sécurité, sous linux, le principal soucis est l'interface chaise/clavier

+1 (0) -1 (0) Répondre
07-06-2014, 15h58
Message : #3
fr0g Hors ligne
NTEuNDI2MzcsLTEuNzc4NDg4
*****



Messages : 348
Sujets : 22
Points: 56
Inscription : Aug 2011
RE: [C] Quand utiliser les structures ?
Je ne fais trop de C#, mais personnellement en C, comme tu l'as précisé , je les utilises premièrement pour des raisons de contraintes (norme: en particulier, fonctions limités à 4 params).

autrement, eh bien pour les arbres, listes chainées (n'ayant pas les conteneur genre listes ou vectors du C++)

Sinon, le dernier cas ou je les utilise le plus est bien pour la clarté du code, et le coté pratique, je trouverai toujours ça préférable de transmettre, par exemple plusieurs données ayant un lien entre elles ( Genre: nom de fichier, taille, location, type, etc...) ) travers une structure dont je passerai le pointeur à mes fonctions, au lieu de me trimballer un sac de variables à travers tout le programme. Smile
+1 (0) -1 (0) Répondre
07-06-2014, 16h10
Message : #4
supersnail Hors ligne
Éleveur d'ornithorynques
*******



Messages : 1,608
Sujets : 71
Points: 466
Inscription : Jan 2012
RE: [C] Quand utiliser les structures ?
Je rejoins ce qui se dit plus haut, ça sert pas mal pour les structures de données "complexes" (i.e listes, arbres, graphes, représentation de coordonnées/structures mathématiques ou autres), pour la lisibilité du code, mais aussi pour "fabriquer" des formats de fichier (par exemple, PE/ELF et compagnie c'est des tas de structures plus ou moins documentées).
Ça pourrait aussi éventuellement servir pour "simuler" de la POO (d'ailleurs les objets qu'on manipule C++ ne sont qu'une structure contenant les variables membres de la structure, et dont le premier champs un un pointeur vers une "vtable" (i.e une table de pointeurs de fonctions, pour pouvoir faire des fonctions virtuelles et tout ce qui en découle) Wink.

Sinon pour apprendre à utiliser les structures le mieux c'est encore de lire et écrire du code, bouffer de la structure Wink
Mon blog

Code :
push esp ; dec eax ; inc ebp ; and [edi+0x41],al ; dec ebp ; inc ebp

"VIM est merveilleux" © supersnail
+1 (1) -1 (0) Répondre
07-06-2014, 19h29
Message : #5
Geluchat Hors ligne
Ethical Hacker
*



Messages : 13
Sujets : 3
Points: 10
Inscription : May 2014
RE: [C] Quand utiliser les structures ?
Personnellement, en C, je les utilise principalement pour les threads, comme on peut passer qu'un seul parametre Wink
+1 (0) -1 (0) Répondre
09-06-2014, 18h32
Message : #6
ark Hors ligne
Psyckomodo!
*****



Messages : 1,033
Sujets : 48
Points: 317
Inscription : Sep 2011
RE: [C] Quand utiliser les structures ?
Je réponds en speed, a mon sens, c'est totalement indispensable dans le cas d'utilisation de pointeurs sur fonctions génériques qui prennent en paramètre de type void *; et également dans le cas de structures de données, comme des listes chainées, graphes ou autre.
Ensuite, personnellement, je m'en sert aussi un peu pour organiser mon code, le rendre plus lisible, mais cela va généralement de pair avec des listes chainées. :p
+1 (0) -1 (0) Répondre
25-08-2015, 22h52 (Modification du message : 25-08-2015, 22h56 par Commodor.)
Message : #7
Commodor Hors ligne
Ho ! Dodgson !
*



Messages : 64
Sujets : 9
Points: 36
Inscription : Nov 2011
RE: [C] Quand utiliser les structures ?
Pour remonter un peu le topic, je dirais même qu'elles sont omniprésentes lorsqu'un programme commence à prendre de l'envergure (>2000 lignes). Comme cité ci-dessus, des listes, pointeurs sur fonctions, threads, réduire le nombre de paramètres pour les fonctions, etc.

Mais comme son nom l'indique, une structure sert principalement à "structurer" (sérieux Tongue) des données (qui sont plus ou moins liées selon l'utilisation que l'on en a).

Pour une application système, on pourrait très bien s'en servir pour gérer les utilisateurs :

Code :
struct sys_user {
        char *name;
        char *passwd;
        char *tty;
        struct sys_group **grp;   /* le ou les groupes de l'utilisateur */
};

struct sys_group {
        char *name;
        int nb_users;
        struct sys_user **users; /* qui pointe sur chaque utilisateur du groupe */
};

Autre cas d'utilisation très pratique : les applications réseaux. Très utile pour sérialiser des données sans se prendre la tête :

Code :
union frame {
       struct content {
               __u8 header;
               __u8 msg[128];
               __u16 sum;
       };
       __u8 buffer[sizeof(struct content)];
};
Hahaha you didn't say the magic word !
+1 (1) -1 (0) Répondre
26-08-2015, 18h11
Message : #8
balis Hors ligne
Hack Compagnie by Eballys
*



Messages : 156
Sujets : 3
Points: 16
Inscription : Dec 2012
RE: [C] Quand utiliser les structures ?
Bref les structures c'est la vie.Le truc c'est de les utiliser pour regrouper des informations. Après seule ton expérience perso te guidera sur oui ou non , je dois les utiliser.
Sur le net , les poules ont des dents. Bali .
Soit original soit celui qui sort de l'ordinaire soit toi . Bali .
C: ok bash : ok asm : en cours.
HTML/CSS : ok , PHP/MySQL : en cours.
+1 (0) -1 (0) Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)
N-PN
Accueil | Challenges | Tutoriels | Téléchargements | Forum | Retourner en haut