首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

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

2012-02-25 
请教:用new动态分配结构数组的赋值问题//C++PrimerPlus(第五版)练习题关于用new动态分配结构数组的问题//p

请教:用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;
也可以,看个人习惯

热点排行