Pointeurs [C] - C - Programmation
Marsh Posté le 11-11-2004 à 18:38:13
c0wb0y a écrit : t1.arg = t2->resultat = t2.arg1 + t2.arg2 |
Pas d'accord ! t2 n'est pas un pointeur donc tu peux pas écrire
"t2->..."
C'est Panini qui a raison
*(t2.resultat) = t2.arg1 + t2.arg2 (je ne sais pas si les parenthèses sont obligatoires, il y a beaucoup de priorités en C et je ne les connais pas toutes)
Marsh Posté le 11-11-2004 à 19:09:08
Code :
|
Affichage : 5
Marsh Posté le 11-11-2004 à 19:54:48
Sve@r a écrit : Pas d'accord ! t2 n'est pas un pointeur donc tu peux pas écrire |
oui j'ai pas fait gaffe (:
Et oui tes parenthèses sont obligatoire, mais comme c'est moche, on écrit avec la fleche (-> ) plutot que parenthese + *
Marsh Posté le 13-11-2004 à 05:00:31
Et non les parenthèses ne sont pas obligatoires car "." a une plus grande précédence que "*", mais c'est une bonne idée d'en mettre pour faciliter la lecture.
Marsh Posté le 13-11-2004 à 10:23:26
matafan a écrit : Et non les parenthèses ne sont pas obligatoires car "." a une plus grande précédence que "*", mais c'est une bonne idée d'en mettre pour faciliter la lecture. |
on m'avait dit le contraire
Marsh Posté le 13-11-2004 à 12:13:10
c0wb0y a écrit : |
Tu fais une confusion entre "pointeur sur structure" et "pointeur sur un membre"
1) Si tu as "p" pointeur sur structure et que tu veux récupérer un membre "m" de cette structure, tu dois écrire :
(*p).m
Mais comme c'est moche et fastidieux, on peut remplacer cette écriture par:
p->m
Cette seconde écriture ne change rien. "p" est un pointeur sur une structure et "m" un membre de cette structure
2) Maintenant, cas inverse. Tu as "s" une variable de type "struct ..." et "pm" un membre de "s" pointeur sur qq chose, si tu veux récupérer le contenu de "pm" tu dois écrire:
*(s.pm) ou bien *s.pm (puisque matafan dit que les parenthèses ne sont pas obligatoires)
Mais faut faire attention, ici le pointeur c'est "pm" et pas "s" même si on met l'étoile avant "s".
A+
Marsh Posté le 11-11-2004 à 17:13:20
Salut,
J'ai une structure tache :
typdedef struct Tache
{
int arg1;
int arg2;
int *resultat;
} Tache;
En fait je voudrais que le resultat de cette struture tache pointe sur l'argument d'une autre tache.
Par exemple:
Tache t1;
Tache t2;
t2.resultat = &t1.arg1;
Mais comment modifier t1.arg1 à partir de t2.resultat;
Je voudrais que le resultat de l'addition de arg1 et arg2 de t2 soit ecrit à l'adresse où pointe t2.resultat soit t1.arg1.
Comment faire?