| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 495 人关注过本帖
标题:c++ primer plus第6版练习题9 问题求组
取消只看楼主 加入收藏
yehunyou
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
结帖率:100%
收藏
已结贴  问题点数:20 回复次数:3 
c++ primer plus第6版练习题9 问题求组
题目为:
结构CandyBar保护3个成员,第一个是存储糖果品牌,第二个是存储糖果重量,第三个是存储糖果卡路里含量。现在是编写一个程序,创建一个使用new的动态分配数组,该数组为包含3个元素的CandyBa数组,然后初始化各个元素,并显示出来。 大概就是这么个意思。
我写的代码:
#include<iostream>
int main()
{
using namespace std;
struct CandyBar
{
char name[30];
double weight;
int calorie;
};
CandyBar *snack=new CandyBar[3];

snack[0]{"third",2.7,5};





cout <<snack[0].name <<snack[0].calorie <<snack[0].weight ;
cout <<snack[1].calorie <<snack[1].name <<snack[1].weight ;
cout <<snack[2].calorie <<snack[2].name <<snack[2].weight ;
delete [] snack;
return 0;
}
问题就是 在,建立动态指针数组后, 怎么给 snack赋值。我的理解是此snack是个指针数组,那个就可以使用指针数组的赋值方法,即 snack[0]表示第一个元素,可以直接给赋值。 但是编译器 看见赋值符合就是那个大括号就 报错,
高人指点指点,迷茫啊,没搞懂为什么就不行呢。
搜索更多相关主题的帖子: include 练习题 double 卡路里 
2013-12-19 11:21
yehunyou
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
收藏
得分:0 
回复 2楼 wp231957
这种也能够运行,
但是我其实比较像知道,为什么  我的这种写法 会错误,这个错误在什么地方呢
还有   
赋值的方法, snack[0].name=“def” 这种方法为什么也不行,非得用你所写的那种复制的strcay 这种方式,毕竟 使用snack[0].weight=5 这种形式都是被允许的。
能解释下吗?
2013-12-19 16:39
yehunyou
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
收藏
得分:0 
回复 4楼 犬虫门心本人
感谢回答,但是第一句话就说了 这个是一个结构!
另外 数组初始化这个问题,哎,是读书不够认真啊。
数组的初始化只能够在定义的时候进行初始化,其他的时候就不被允许了。
数组不是常量,毕竟可以使用它进行 cin操作。只是数组初始化规则 不允许了而已。
2013-12-20 10:15
yehunyou
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2013-12-19
收藏
得分:0 
这里用new动态分配数组,已经是一个初始化过程了,指针都有相应地址了, 后面是一个赋值的过程了。
2013-12-20 10:20
快速回复:c++ primer plus第6版练习题9 问题求组
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.020508 second(s), 8 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved