Posté(e) le 1 juin 200322 a Le programme suivant fonctionne alors qu'il ne devrait pas logiquement, car je fait une itteration alors que je ne fait pas d'allocation dynamique de memoire. En fait à la place de p=new Date; j'aurais dû ecrire p= new Date[5]; pour pouvoir ittéré 5 fois. Car avec la premiere forme, le compilateur ne reserve q'un seul emplacement memoire de type Date alors que je lui demande de stoqué 5 objets de ce type, ceci devrait lui posé probleme et il devrait donc me renvoyer une erreur a la compilation. #include<iostream.h> #include<conio.h> struct Date {int jour,mois,annee; }; int main() { Date *p; p=new Date; /* normalement on aurait dû mettre: p= new Date[5]; */ for(int i=0;i<5;i++) { cout<<"jour :";cin>>p.jour;cout<<endl; cout<<"mois :";cin>>p.mois;cout<<endl; cout<<"année :";cin>>p.annee;cout<<endl; } for(int i=0;i<5;i++) { cout<<"jour : "<<p.jour; cout<<" mois :"<<p.mois; cout<<" année :"<<p.annee; cout<<endl; } getch(); return 0; }
Posté(e) le 1 juin 200322 a par la programmation ça fait trop longtemps Modifié le 14 septembre 200519 a par XZombi
Posté(e) le 2 juin 200322 a p est un pointeur.... il peut donc être géré comme un tableau (mais il faudrait un calloc...) Je sais pas....
Posté(e) le 3 juin 200322 a p est un pointeur.... il peut donc être géré comme un tableau (mais il faudrait un calloc...)Je sais pas.... Si new a la même fonction qu'en java, ca devrait marcher. Mais c'est pas très beau. Calloc est une solution, mais mieux vaut utiliser malloc qui réserve un nombre d'octect, c'est tellement plus pratique. p=malloc(5*sizeof(Date));
Archivé
Ce sujet est désormais archivé et ne peut plus recevoir de nouvelles réponses.