正文

钱能的《C++程序设计教程》序列七:chapter7第一部分2005-08-05 00:13:00

【评论】 【打印】 【字体: 】 本文链接:http://blog.pfan.cn/xiangyu/3442.html

分享到:

声明:为了大家的共同学习,特推出一些经典书籍的课后练习的答案,答案内容属原创,转载请注明出处,欢迎大家批评指正。

这一序列说明:
1.采用国内的教材:《C++程序设计教程》钱能主编 清华大学出版社 1999
2.在每一章练习解答前会有一个“疑难知识点”概述,这里只代表我自己的观点,也就是我自己现在还不能达到非常熟练,或者我初学时感觉比较模糊的知识。
3. 有一些答案来自网络,里面答案的选题编辑:张朝阳,责任编辑:徐培忠、林庆嘉。在这里表示感谢。以后这里的答案简称“网络版”
4.更多的学习和改进将在《The C++ programming language》答案序列中体现。

序列七:chapter7

一、疑难知识点:
1.数组定义中的方括号里面必须是常量表达式,但是逗号表达式不行。基本上同switch——case

2.字符数组不必以\0结尾,字符数组经典的赋值方法是:char aa[]="hello";这时注意字符数组的元素共6个,包括\0,也可以是char aa[]={"hello"};或者最原始的char aa[]={'h','e','l','l','o','\0'};字符数组一般没有赋值的元素都是\o(这个仅是在我的机器上做的有限的实验的结论,没有标准依据)

3.当传递一个数组作为参数时,若要用到这个数组的大小时也必须一起传递过去,因为数组参数不能通过sizeof求得数组大小。如下例子:
#include<iostream>
using namespace std;

int AA(int aa[])
{
    return sizeof(aa);
}
void main()
{
    int aa[10]={1,2,3,5,7,8};
    cout<<sizeof(aa)<<endl;

    cout<<AA(aa)<<endl;
}

结果是:
40
4

从这个结果我们还得出:
把sizeof用于数组时求得的是数组所占空间的大小而不是数组的元素的个数。在这里数组元素的个数为:sizeof(aa)/sizeof(int);

4.对于二维数组,如果对全部元素都赋值,则定义数组时对第一维的大小可以忽略,但是第二维的大小不能省略。当分行赋值时,在只对部分元素赋初值时也可以省略第一维大小(这时其大小取决于最大分行的个数)。

5.p133降维处理的例子ch7_8.cpp里面的
cout <<"the max grade is "
       <<maximum(&sg[0][0],3*4)    //传递第一个元素地址和元素个数
       <<endl;
其实就是把第一个元素的地址传给人家,至于后面的个数那是随便你给,你可以给1,2……当然不能给多(<12)否则会出现不可预料的结果。也可以改为:maximum(sg[0],3*4),当然你也可以把中间的地址,不一定是第一个元素的地址传过去,如:maximum(sg[1],2*4)或者maximum(&sg[0][1],11)。个数最好也传递过去,要不然别人不知道你原来的数组可用的元素有多少。











阅读(3527) | 评论(0)


版权声明:编程爱好者网站为此博客服务提供商,如本文牵涉到版权问题,编程爱好者网站不承担相关责任,如有版权问题请直接与本文作者联系解决。谢谢!

评论

暂无评论
您需要登录后才能评论,请 登录 或者 注册