动态数组结构的初始化问题
动态数组结构怎样初始化啊?
其他方法我试过,都可以。就是初试化动态数组结构出错误。
那位高手帮忙看一下程序错误在哪里?
#include <iostream>
const int SIZE=20;
struct snack
{
char name[SIZE];
float weight;
int calo;
};
int main()
{
using namespace std;
snack *CandyBar=new snack[3];
CandyBar[0]={ "Mocha Munch ",2.3,350 };//这里出错
CandyBar[1]={ "Tony Mo ",2.4,360 };
CandyBar[2]={ "Sally Huang ",2.5,370 };
int i;
for(i=0;i <3;i++)
{
cout < < "Name: " < <CandyBar[i].name < <endl;
cout < < "Weight: " < <CandyBar[i].weight < < " kilograme.\n ";
cout < < "Calo: " < <CandyBar[i].calo < < " calo.\n ";
cout < <endl;
}
delete [] CandyBar;
return 0;
}
[解决办法]
const int SIZE=20;
struct snack
{
char name[SIZE];
float weight;
int calo;
snack() {}
snack(const char na[], float w, int c) {
strncpy(name, na, sizeof(name));
weight = w;
calo = c;
}
};
int main()
{
using namespace std;
snack *CandyBar=new snack[3];
CandyBar[0]= snack( "Mocha Munch ",2.3,350);
CandyBar[1]= snack( "Tony Mo ",2.4,360);
CandyBar[2]= snack( "Sally Huang ",2.5,370);
int i;
for(i=0;i <3;i++)
{
cout < < "Name: " < <CandyBar[i].name < <endl;
cout < < "Weight: " < <CandyBar[i].weight < < " kilograme.\n ";
cout < < "Calo: " < <CandyBar[i].calo < < " calo.\n ";
cout < <endl;
}
delete [] CandyBar;
return 0;
}