读书人

请问:用new动态分配结构数组的赋值有关

发布时间: 2012-02-25 10:01:49 作者: rapoo

请教:用new动态分配结构数组的赋值问题
//C++ Primer Plus(第五版)练习题 关于用new 动态分配结构数组的问题
//p110 6.结构CandyBar包含3个成员,如编程练习5所示.
//请编写一个程序,创建一个程序,创建一个包含3个元素的
//CandyBar数组,并将它们初始化为所选择的值,然后显示每个结构的内容.
//完成编程练习6,但使用new来动态分配数组,而不是声明一个包含3个元素的CandyBar数组.

#include <iostream>
const MAX=20;

using namespace std;
struct CandyBar
{

char brand[MAX];
double weight;
int calorie;

};

int main()
{
CandyBar *snack = new CandyBar [3]= //是不是这里出现了问题,不能在分配时赋值?
//还是我用new用错了
{ //22行
{ "liudongming " , 12.2 , 55 }, //23行
{ "liudehua " , 54.6 , 42 }, //24行
{ "dell " , 45.2 , 31 } //25行
};
for(int i=0;i <3;i++)
{
cout < <snack[i].brand < <endl
< <snack[i].weight < <endl
< <snack[i].calorie < <endl < <endl;
}
delete [] snack; //这将释放snack指向的内存,但不会删除指针本身.
return 0;
}

出错信息:--------------------Configuration: 4_110_9 - Win32 Debug--------------------
Compiling...
new_array.cpp
......(22) : error C2059: syntax error : '{ '
......(22) : error C2143: syntax error : missing '; ' before '{ '
......(23) : error C2143: syntax error : missing '; ' before '} '
......(23) : error C2143: syntax error : missing '; ' before ', '
......(24) : error C2143: syntax error : missing '; ' before '{ '
......(24) : error C2143: syntax error : missing '; ' before '} '
......(24) : error C2143: syntax error : missing '; ' before ', '
......(25) : error C2143: syntax error : missing '; ' before '{ '
......(25) : error C2143: syntax error : missing '; ' before '} '
执行 cl.exe 时出错.

new_array.obj - 1 error(s), 0 warning(s)




我不直接赋值,把22到25行语句改为
CandyBar *snack = new CandyBar [3];

snack[0]={ "liudongming " , 12.2 , 55 };
snack[1]={ "liudehua " , 54.6 , 42 };
snack[2]={ "dell " , 45.2 , 31 };
还是不行,这到底是为什么呢,望高人指点!!


[解决办法]
CandyBar *snack = new CandyBar[3] ; //是不是?里出?了??,不能在分配????
//?是我用new用?了
snack[0].set( "liudongming " , 12.2 , 55); //23行
snack[1].set( "liudehua " , 54.6 , 42 ); //24行
snack[2].set( "dell " , 45.2 , 31 ) ; //25行

for(int i=0;i <3;i++)
{
cout < <snack[i].brand < <endl;
cout < <snack[i].weight < <endl;
cout < <snack[i].calorie < <endl < <endl;
}
delete [] snack;
也可以,看个人习惯

读书人网 >C++

热点推荐