菜鸟求助,求高手解迷惑啊
编了了一个关于结构数组的小程序,结构中的成员值由用户输入,然后存入到对应的结构成员中,程序源代码如下:
#include<iostream>
struct CandyBar
{
char* ps;
float weight;
int en;
};
char* ps=new char[20];
int main()
{
using namespace std;
CandyBar arr[3]=
{
{"ab",1.0,1},
{"bc",2.0,2},
{"cd",3.0,3}
};//声明一个包含三个CandyBar 对象的数组,并赋初值,注意中间的逗号
cout<<"请输入第一种糖果的品牌:";
cin.getline(arr[0].ps,20);//将输入的品牌存入arr数组中第一个CandyBar对象的动态字符数组中
cout<<"请输入第一种糖果的重量:";
cin>>arr[0].weight;
cout<<"请输入第一种糖果的卡路里数:";
cin>>arr[0].en;
cout<<"请输入第二种糖果的品牌:";
cin.getline(arr[1].ps,20);//将输入的品牌存入arr数组中第二个CandyBar对象的动态字符数组中
cout<<"请输入第二种糖果的重量:";
cin>>arr[1].weight;
cout<<"请输入第二种糖果的卡路里数:";
cin>>arr[1].en;
cout<<"请输入第三种糖果的品牌:";
cin.getline(arr[2].ps,20);//将输入的品牌存入arr数组中第一个CandyBar对象的动态字符数组中
cout<<"请输入第三种糖果的重量:";
cin>>arr[2].weight;
cout<<"请输入第三种糖果的卡路里数:";
cin>>arr[2].en;
cout<<"第一种糖果的信息: {{ "<<arr[0].ps
<<" , "<<arr[0].weight<<" , "<<arr[0].en
<<" }} \n";
cout<<"第二种糖果的信息: {{ "<<arr[1].ps
<<" , "<<arr[1].weight<<" , "<<arr[1].en
<<" }} \n";
cout<<"第三种糖果的信息: {{ "<<arr[2].ps
<<" , "<<arr[2].weight<<" , "<<arr[2].en
<<" }} \n";
delete[]ps;
return 0;
}
编译是成功的,但是调试的时候有异常:

这是哪里出问题了呢?求指教 iostream
[解决办法]
可以,
struct CandyBar
{
char *ps;
float weight;
int en;
CandyBar() {
ps = new char[20];
}
~CandyBar() {
delete [] ps;
}
};
[解决办法]
#include<iostream>
struct CandyBar
{
char* ps;
float weight;
int en;
};
char* ps=new char[20];
int main()
{
using namespace std;
CandyBar arr[3]=
{
{"ab",1.0,1},
{"bc",2.0,2},
{"cd",3.0,3}
};//声明一个包含三个CandyBar 对象的数组,并赋初值,注意中间的逗号
cout<<"请输入第一种糖果的品牌:";
arr[0].ps = new char[20];
cin.getline(arr[0].ps,20);//将输入的品牌存入arr数组中第一个CandyBar对象的动态字符数组中
cout<<"请输入第一种糖果的重量:";
cin>>arr[0].weight;
cout<<"请输入第一种糖果的卡路里数:";
cin>>arr[0].en;
cout<<"请输入第二种糖果的品牌:";
arr[1].ps = new char[20];
cin.getline(arr[1].ps,20);//将输入的品牌存入arr数组中第二个CandyBar对象的动态字符数组中
cout<<"请输入第二种糖果的重量:";
cin>>arr[1].weight;
cout<<"请输入第二种糖果的卡路里数:";
cin>>arr[1].en;
cout<<"请输入第三种糖果的品牌:";
arr[2].ps = new char[20];
cin.getline(arr[2].ps,20);//将输入的品牌存入arr数组中第一个CandyBar对象的动态字符数组中
cout<<"请输入第三种糖果的重量:";
cin>>arr[2].weight;
cout<<"请输入第三种糖果的卡路里数:";
cin>>arr[2].en;
cout<<"第一种糖果的信息: {{ "<<arr[0].ps
<<" , "<<arr[0].weight<<" , "<<arr[0].en
<<" }} \n";
cout<<"第二种糖果的信息: {{ "<<arr[1].ps
<<" , "<<arr[1].weight<<" , "<<arr[1].en
<<" }} \n";
cout<<"第三种糖果的信息: {{ "<<arr[2].ps
<<" , "<<arr[2].weight<<" , "<<arr[2].en
<<" }} \n";
delete[] arr[0].ps;
delete[] arr[1].ps;
delete[] arr[2].ps;
delete[] ps;
return 0;
}
試下這樣
