您的位置:首页 > 编程语言 > C语言/C++

《c++ primer》读书笔记--数组与指针

2016-10-06 10:37 155 查看
1.缓冲区溢出:我们在编程时没有检查下标,并且引用了超出数组或其他类似数据结构边界的元素时。

2.建议:尽量避免使用指针和数组,两者都容易引起不可预料的错误,指针常用于低级操作。许多有用的程序都可以不用数组和指针。

          vector和迭代器代替一般数组,string类型代替c风格字符串。

3.一个有效的指针必须是一下三种状态之一:

  (1)保存一个特定对象的地址

  (2)指向某个对象后面的另一个对象

  (3)是0值,表示他不指向任何对象

4.实践须知:如何可能的话,除非所指的对象已经存在,否则不要先定义指针。如果非要分开定义,可将指针现行初始化为0,程序可判断该指针并未指向一个对象。

5.void *指针(特殊指针)

  他可以保存任何类型对象的地址。(不能使用void指针操作他所指向的对象)

6.指针与引用的比较

  (1)定义引用是没有初始化时错误的

  (2)给引用赋值修改的是该引用所关联的对象的值,而不是使该引用与另一个对象关联(引用从一而终)

7.指针的指针    v表示value,a表似乎address



8.指针与typedef

  typedef string *pstring;

  const pstring cstr;

  问cstr变量是什么类型?-------答 string *const cstr                 申明const pstring时,const修饰的是pstring的类型,这是一个指针。因此该申明语句是吧cstr定义为指向string类型对象的const指针。

9.c风格字符串

  字符串字面值的类型就是const char 类型的数组。        一般理解为以空字符null 结束的字符数组。

  永远不要忘记字符串结束符 null

10.允许动态分配空数组

  调用new动态创建长度为0的数组是合法的,new返回有效的非零指针。该指针与new返回的其他指针不同,不能进行解引用操作。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: