读书笔记:《The C++ programming Language》 第五章

来源:互联网 发布:mysql 数据不能重复 编辑:程序博客网 时间:2024/06/02 18:18

 The sublime and the ridiculous are often so nearly related that it is difficult to class them separately

                                                                                                                                    -- Tom Paine

 

  真理与荒谬是如此的接近,以至于无法单独把他们分开

                                                                   -- 托马斯.潘恩(英国作家)

 

 

本章也是C语言的基础,因此,这章讲的就比较粗略了,发现作者对语法不是很感兴趣, 就像他在第二章里写的: The emphasis is on design approaches and ways of organizing programs rather than on language details.

 

 这本书的结构就是这样的,详细讲的是思想,具体的语法作者在后面列了一个附录,如有需要敬请查阅.

不过这章也讲了一些底层的东西和容易错的问题,深度还是够的, 比如:

  •    char *p="Plato" ,  其中,此字符串是不允许修改的
  •    指针的操作:关于数组指针大小问题(面试常考)
  •    常量的空间分配问题:  如果常量的值能完全确定, 那么,就不会分配有空间(和宏定义是一样的)  但如果常量的地址被使用,那么,还要分配空间, 常量数组必须分配空间,因为无法确定使用哪个元素,但很多机器是把常量数组放在只读空间,从而提高性能
  •     内存对齐(面试常考的问题) 
  •     指针常量和常量指针(面试常考)
  •     还介绍了一个精致的小程序: 输入N个字符串,统计重复字符串出现的次数. 这个似乎以前面试也考过.  如果用C语言的思维会比较麻烦,还要考虑溢出的问题. 但用C++的思维却很简单, 具体例子请见书

章后作者的建议:

1.         避免对指针做不常见的操作

2.         小心数组越界问题

3.         使用0而不是NULL

4.         使用vectorvalarray,而不是c语言内置的数组(作者已经强调好多次了,不要用原来的内置的数组了!)

5.         使用string而不是char数组

6.         尽量少使用引用做函数参数

7.         除非做底层操作,不要使用void*

8.         不要使用魔术数字”,使用有含义的常量(这个恐怕是所有语言都有提及吧)

 

 

本章思维导图: