Je voudrais augmenter l'âge de 1 avec la fonction aging(), à partir de l'entrée de données de type struct.C++ struct tableau avec pointeur
Je voulais obtenir l'entrée de données comme un tableau de struct, et obtenir l 'argument struct comme type de pointeur, mais seulement à l'échec (l'âge est pas augmentée)
Quel est le problème?
#include <iostream>
using namespace std;
struct Person
{
int age;
double weight, height;
};
void aging(Person* p);
int main()
{
Person ps[2];
for (int i=0; i<2; i++){
cout <<"age :";
cin >> ps[i].age;
cout <<"weight :";
cin >> ps[i].weight;
cout <<"height :";
cin >> ps[i].height;
}
aging(&ps[2]);
for (int i=0; i<2; i++){
cout <<"age after1: "<<ps[i].age<<"weight after1: "<<ps[i].weight<<"height after1:"<<ps[i].height<<"\n";
}
return 0;
}
void aging(Person* p){
p-> age++;
}
'Quel est le problème?' C'est ce que je veux savoir! Est-ce une erreur du compilateur (si oui, pourquoi ne l'avez-vous pas inclus?) Est-ce l'exécution? (Si oui, pourquoi ne l'avez-vous pas décrit?) ... – John3136
L'âge n'est pas augmenté –
Si vous avez lancé ceci sous Valgrind, vous verrez bientôt que vous avez accès à une valeur hors plage dans '& ps [ 2] '. Envisagez de vieillir '& ps [1]' à la place. –