菜鸟的天花板

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::
(1)指针的值(即地址)应属于下列4种状态之一:
        a.指向一个对象;
        b.指向紧邻对象所占空间的下一个位置;
        c.空指针,意味着指针没有指向任何对象;
        d.无效指针,也就是上述情况之外的其他值。
注:尽管“b”、“c”形式的指针是有效的,但其使用同样受到限制。显然这些指针没有指向任何具体对象,所以试图访问此类指针(假定的)对象的行
为不被允许,如果这样做了,后果无法预计。

(2)解引用操作符“*”,适用于那些确实指向某个对象的有效指针。

(3)生成空指针的几种方法:
        a.int *p1 = nullptr;       // c++11新引入的方法,它可以被转换为任意其他的指针类型。
        b.int *p1 = 0;
        c.int *p1 = NULL;        // 需要先声明“#include cstdlib”
注:c++11中,尽量用“nullptr”,避免使用“NULL”。 

(4)把int 变量直接复制给指针是错误的操作,即使int变量恰好等于0也不行。

(5)尽量在定义了对象之后,再定义指向它的指针。

(6)只要指针拥有一个合法值,就能将它用在条件表达式中,如果指针的值是0,条件取false;而任何非0指针对应的条件都是true.

(7)void*是一种特殊的指针,可用于存放任意对象的指针。
  利用void*指针能做到事有限:
    1)拿它和别的指针比较
    2)作为函数的输入或输出、
    3)或者赋给另外一个void*指针。
注:不能直接操作void*指针所指的对象,因为并不知道这个对象到底是什么类型。
 
(8)指针是对象,所以存在对指针的引用:
        int i = 42;
        int *p;
        int *&r = p;   // r是一个对指针p的引用
        r = &i;        // r引用了一个指针,因此给r赋值&i就是令p指向i.
注:要理解r 的类型到底是什么,最简单的方法是从右向左读取r的定义。离变量名最近的符号对变量的类型有最直接的影响,因此上文中r是一个引用。
声明符的其余部分用以确定r引用的类型是什么,因此上文中r引用的是一个指针。最后,声明的基本数据类型部分指出r引用的是一个int指针。
posted on 2025-02-13 21:10  菜鸟1234567  阅读(6)  评论(0)    收藏  举报