C++ Primer Plus第六版编程练习8.2解答
来源:互联网 发布:搜狗输入法云计算360 编辑:程序博客网 时间:2024/05/22 13:12
#include <iostream>#include <cstring>struct CandyBar{ char *brand; double weight; int calories;};void set(CandyBar & cb,char *brand="Millennium Munch",double wegiht=2.85,int calories=350);//设置默认参数void show(const CandyBar & cb);using std::cout;using std::cin;using std::endl;int main(){ CandyBar candybar; set(candybar); show(candybar); delete [] candybar.brand; //由于再次使用时会对candybar.brand指针重新赋值,所以在此前要先释放该内存 set(candybar,"Mario",3.98,300); show(candybar); delete [] candybar.brand; //同理,使用完后要释放candybar.brand指向的动态存储空间 return 0;}void show(const CandyBar & cb){ cout<<"brand: "<<cb.brand<<endl; cout<<"weight: "<<cb.weight<<endl; cout<<"calories: "<<cb.calories<<endl; cout<<endl;}void set(CandyBar & cb,char *name,double weight,int calories){ cb.brand=new char[strlen(name)+1]; //注意这里不能直接让cb.brand=name,因为cb.brand是一个还没有确定存储位置的空指针, //直接对其赋值是危险的,编译不会报错,但运行时会出错 //而使用new后则是开辟了一段动态存储空间并让cb.brand指向它, //此时cb.brand的存储位置才是确定的,才能对它赋值 cb.brand=name; //此时才可以对cb.name指针赋值 cb.weight=weight; cb.calories=calories;}
本题的关键在于对char指针的处理
大家可以看看另一篇我转的文章:char *p 与char p[] 比较一些总结
0 0
- C++ Primer Plus第六版编程练习8.2解答
- C++ Primer Plus第六版编程练习6.7解答
- C++ Primer Plus第六版编程练习6.9解答
- C++ Primer Plus第六版编程练习7.10解答
- C++ Primer Plus第六版编程练习8.6解答
- C++ Primer Plus第六版编程练习9.1解答
- C++ Primer Plus第六版编程练习9.4解答
- C++ Primer Plus第六版编程练习10.3解答
- C++ Primer Plus第六版编程练习10.4解答
- C++ Primer Plus第六版编程练习10.5解答
- C++ Primer Plus第六版编程练习10.6解答
- C++ Primer Plus第六版编程练习10.8解答
- C++ Primer Plus第六版编程练习11.1解答
- C++ Primer Plus第六版编程练习11.2解答
- C++ Primer Plus第六版编程练习11.3解答
- C++ Primer Plus第六版编程练习11.4解答
- C++ Primer Plus第六版编程练习11.5解答
- C++ Primer Plus第六版编程练习11.6解答
- pickupView点菜系统
- 框架的直接链接
- int ascii_to_integer(char *str); 这个字符串参数必须包含一个或者多个数字,函数应该把这些数字字符转换为整数并返回这个整数。
- javascript学习之解析顺序和变量作用域
- 点击textfield为什么不弹出软键盘
- C++ Primer Plus第六版编程练习8.2解答
- Android省电开发 浅析
- 黑马程序员——Java编程语言学习总结 –异常与File类
- 20150324-2
- android项目两种构建方式的整合(Eclipse/idea和Android Studio)
- jQuery插件第五十二:无刷新批量上传文件
- javascript学习之内置顶层函数
- 蓝桥杯 ALGO-91 Anagrams问题(水题)
- 逆序打印整数,要求递归实现