Pages : 1
#1 Le 12/11/2008, à 16:23
- openbsd
programmation C, pointeur nul
Bonjour,
Résultat affiché à l'écran : ->0
je ne comprends pas pourquoi mon pointeur est nul , pourquoi ça affiche l'adresse de Atm1->origine à 0 alors que j'ai mon if() qui vérifie que Atome2->origine existe??? Voici une partie de mon code :
Merci d'avance
struct corps {
long double x, y, z;
long double vx, vy, vz;
long double fx, fy, fz;
double masse, masse_totale, force_liante;
struct corps *c0, *c1, *c2, *c3, *c4, *c5;
struct corps *suivant, *origine;
};
void barycentre(struct corps *Atm0, struct corps *Atm1) {
struct corps *Slct = 0, *Atmp;
vect_3d bary;
bary.x = Atm1->x;
bary.y = Atm1->y;
bary.z = Atm1->z;
Atmp = Atm0;
Slct = Atm0;
printf("->%d\n", Atm1->origine);
exit(0);
}
int main(int argc, char *argv[]) {
if(Atome2->origine) {
Atome2->origine->masse_totale -= Atome2->masse;
barycentre(Aorig, Atome2->origine);
Atome2->origine = 0;
}
}
#2 Le 12/11/2008, à 16:54
- Bigcake
Re : programmation C, pointeur nul
dans ton main tu a mis :
barycentre(Aorig, Atome2->origine);
dans ta fonction tu a mis :
void barycentre(struct corps *Atm0, struct corps *Atm1)
printf("->%d\n", Atm1->origine);
donc ce que tu affiche n'est pas Atome2->origine
mais Atome2->origine->origine
Dernière modification par Bigcake (Le 12/11/2008, à 16:55)
"Les gens" ne sont pas cons, ils ont été habitués à la facilité et à la désinformation. Le meilleur moyen de ne pas les aider, c'est de se moquer. Le meilleur moyen de les aider, c'est de les informer, encore et encore. La réflexion viendra. N'oubliez pas que vous aussi, vous êtes le con d'un autre.
Smartphone+GNU/Linux=Librem5
Hors ligne
#3 Le 12/11/2008, à 17:25
- openbsd
Re : programmation C, pointeur nul
Merci,
Ca sautait aux yeux pourtant :-) . Merci bcp
Pages : 1