Bonjour,
Je suis évidemment novice en programmation, et dans l'idée de flemmarder en apprenant des trucs, je bidouille structures et pointeurs…
Expérimenter et rechercher m'ont beaucoup aidé dans ma compréhension des pointeurs, mais j'ai besoin d'un guru pour m'éclairer.
faisons parler le code :
typedef struct MaStructure MaStructure;
struct MaStructure
{
int State; // 0
int Prevstate; // -1
int Position; // 0
int Target; // -100
};
MaStructure* Ensemble[3];
Structure STRUCT1;
Structure STRUCT2;
Structure STRUCT3;
Ensemble[0]=&STRUCT1;
Ensemble[1]=&STRUCT2;
Ensemble[2]=&STRUCT3;
for (i=0;i<3;i++)
{
Ensemble[i]->State=0;
Ensemble[i]->Prevstate=0;
Ensemble[i]->Position=0;
Ensemble[i]->Target=0;
}
Alors voila, je veux favoriser l'évolutivité, et éviter les instanciations répétitives laides…
Dans la théorie, je voudrais instancier les structures en les sérialisant comme élément du tableau Ensemble[]…
J'ai beau essayer, que ce soit directement ou avec un pointeur temporaire je ne parviens pas à trouver les combinaisons idoines (*,& ou ->)pour qu'il accepte de rentrer dans le tableau sans faire glapir le compilo au passage.
# malloc ?
Posté par jmax17 . Évalué à 1.
salut je ne comprend pas trop ce que tu désire faire
petit conseil de notation :
en fonction de la valeur nbElem tu peux créer autant d’élément pour ton tableau
# Rien compris :s mais…
Posté par Zylabon . Évalué à 2. Dernière modification le 18 janvier 2014 à 14:25.
ton code est équivalent à :
Please do not feed the trolls
# Facile.
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Tu veux allouer sur le tas, et pas sur la pile. Donc malloc.
[^] # Re: Facile.
Posté par fearan . Évalué à 5.
je sais qu'à la fin du programme tout est désalloué, mais le monsieur (ou la madame) souhaite apprendre donc il faut donner les réflexes de bases, sinon c'est encore bibi qui passe derrière pour balayer.
Quand on écrit malloc (en c) ou new/new il faut OBLIGATOIREMENT penser à la durée de vie des données et les libérer lorsqu'elles ne sont plus utile (via free(c) ou delete/delete ) .
Note bien qu'en java ou tout autre langage on est aussi confronté à la durée de vie des données mais c'est une problématique à la fois plus simple et plus complexe ;)
En gros il faut rajouter avant le return 0
à noter que :
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
[^] # Re: Facile.
Posté par Axioplase ıɥs∀ (site web personnel) . Évalué à 2.
Je fais plus de C. J'avais complètement oublié de désallouer :)
[^] # Re: Facile.
Posté par fearan . Évalué à 2.
hihi ;) en fait y a pleins de choses qui peuvent être faites ;)
comme au lieu d'avoir un tableau de pointeur de structure, avoir un pointeur de tableau de structure. Ici la taille de la structure est suffisamment petite et le nombre d'allocation suffisamment faible pour qu'on puisse avoir
Je rajoute que
Il ne faut pas décorner les boeufs avant d'avoir semé le vent
# sizeof()
Posté par jmax17 . Évalué à 2.
depuis quelque temps je passe à sizeof le nom de la variable plutôt que son type exemple
avec *pMa_struct j'indique a mon compilateur d'utiliser la taille de l'objet pointé par pMa_struct.
mais je ne retrouve pas cette syntaxe dans les forum et autre doc.
est elle déconseillée ?
perso je la trouve sympa je n'ai pas utiliser le nom de la structure qui peux changer
[^] # Re: sizeof()
Posté par Zylabon . Évalué à 2.
En utilisant
struct mastruct *t = malloc(sizeof(struct mastruct));
tout est très explicite.Avec l'autre syntaxe, struct mastruct *t = malloc(sizeof(t))` ça l'est plus du tout.
Et voilà un code très joli, concis, qui compile sans warning, et va produire des bugs aléatoire car on a alloué que
sizeof(void*)
octets au lieux desizeof(struct montype)
… Il manque une étoile…Please do not feed the trolls
[^] # Re: sizeof()
Posté par jmax17 . Évalué à 1.
c'est pas faux le coup du bug aléatoire :(
j'étais bien content de ma petite macro
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.