Tableau Dynamiqu de pointeurs de structures C
Fermé
Euloiix
-
Modifié par Euloiix le 10/02/2011 à 12:01
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 févr. 2011 à 07:56
fiddy Messages postés 11069 Date d'inscription samedi 5 mai 2007 Statut Contributeur Dernière intervention 23 avril 2022 - 13 févr. 2011 à 07:56
A voir également:
- Tableau Dynamiqu de pointeurs de structures C
- Tableau croisé dynamique - Guide
- Tableau ascii - Guide
- Tableau word - Guide
- Le fichier contient un tableau présentant un extrait des livres les plus prêtés à paris en 2016. filtrez le tableau pour ne faire apparaître que les bandes dessinées ado. puis filtrez le tableau pour ne faire apparaître que celles dont l'auteur est zep. quel est le titre de la bande dessinée ado de zep qui a été la plus prêtée d'après ce tableau ? ✓ - Forum Windows 10
- Clémence souhaite faire calculer automatiquement les prix de 30 produits dans trois devises. elle a déjà saisi une formule de calcul pour le tarif du premier produit dans la première devise. corrigez sa formule afin que recopiée vers le bas puis vers la droite, elle remplisse correctement tout le tableau. - Forum Excel
3 réponses
flo13142
Messages postés
71
Date d'inscription
mardi 7 décembre 2010
Statut
Membre
Dernière intervention
21 février 2011
18
10 févr. 2011 à 12:57
10 févr. 2011 à 12:57
Bonjour,
remplace par :
a mon avis ton sizeof (word *) n'est pas bon non plus
la taille de ta structure c'est sizeof (word), sizeof(word *) c'est la taille d'un pointeur : donc en gros 4
et la ta struct faisant 2 pt, ca devrait faire dans les 8:)
remplace par :
*(words[i/48].position) = i; words[i/48].placed = 0;
a mon avis ton sizeof (word *) n'est pas bon non plus
la taille de ta structure c'est sizeof (word), sizeof(word *) c'est la taille d'un pointeur : donc en gros 4
et la ta struct faisant 2 pt, ca devrait faire dans les 8:)
J'oubliais également qu'un typedef est effectué juste avant la déclaration de ma structure:
typedef struct word word;
Bonjour,
J'ai testé, ce code fonctionne bien :
Du coup je contourne un peu mon souci, qui était de changer directement les valeurs pointées. Là je lui passe juste de nouvelles adresses et avec cette synthaxe ça roule.
Une idée pour ne pas utiliser d'adresse à droite de l'égalité ?
J'ai testé, ce code fonctionne bien :
int zero = 0; word* words = NULL; words = (word*)malloc(sizeof(word*) * 1632/48); while (i != 1632/48) { words[i/48].position = &i; words[i/48].placed = &zero; printf("\nStructure %d:\n\t %d \n\t %d ", i, *(words[i/48].position), *(words[i/48].placed));
Du coup je contourne un peu mon souci, qui était de changer directement les valeurs pointées. Là je lui passe juste de nouvelles adresses et avec cette synthaxe ça roule.
Une idée pour ne pas utiliser d'adresse à droite de l'égalité ?
fiddy
Messages postés
11069
Date d'inscription
samedi 5 mai 2007
Statut
Contributeur
Dernière intervention
23 avril 2022
1 835
13 févr. 2011 à 07:56
13 févr. 2011 à 07:56
J'ai testé, ce code fonctionne bien
La syntaxe est bonne, mais fonctionnellement c'est faux.
words = (word*)malloc(sizeof(word*) * 1632/48);
Pas besoin de caster en word*, et ce n'est pas sizeof(word*) mais sizeof(word).
words[i/48].position = &i;
Je doute que cela fasse ce que tu penses.
Il ne faut pas mettre d'adresse à droite dans ton cas. Par contre la syntaxe ne sera plus bonne. C'est là que tu dois corriger.
Soit tu modifies ta structure et t'enlèves les pointeurs dedans.
Soit tu mets *(words[i...].position)=i; mais il ne faudra pas oublier d'allouer de la place à words[i...].position avec un joli malloc.
La remarque s'applique au champ placed.
Cdlt,
La syntaxe est bonne, mais fonctionnellement c'est faux.
words = (word*)malloc(sizeof(word*) * 1632/48);
Pas besoin de caster en word*, et ce n'est pas sizeof(word*) mais sizeof(word).
words[i/48].position = &i;
Je doute que cela fasse ce que tu penses.
Il ne faut pas mettre d'adresse à droite dans ton cas. Par contre la syntaxe ne sera plus bonne. C'est là que tu dois corriger.
Soit tu modifies ta structure et t'enlèves les pointeurs dedans.
Soit tu mets *(words[i...].position)=i; mais il ne faudra pas oublier d'allouer de la place à words[i...].position avec un joli malloc.
La remarque s'applique au champ placed.
Cdlt,
12 févr. 2011 à 18:34
Je teste ça demain et je te tiens au courant.
Mais une question sur ta remarque à propos du sizeof(word*), mon idée était d'avoir un pointeur sur chaque mot (structure word). D'avoir un tableau de pointeurs de structure. Meme dans ce cas c'est pas des (word*) que le tableau doit contenir ?