1、指针本身就是一个对象,允许对指针进行赋值和拷贝,并且在其自身的生命周期中可以先后指向不同的对象。
2、指针不需要在定义的时候赋初值,在块作用域内定义的指针,若没有初始化值,其是未定义的。
3、指针不能指向引用,因为引用不是一个对象,没有实际的地址。
4、指针的类型实际上被用于指定它所指向的对象的类型,必须进行类型匹配。
5、试图对无效指针进行操作,都将引发错误,编译器无法检查出来。
6、解引用的操作仅适用于指向某对象的有效指针。
7、新标准下,初始化最好使用nullptr,当然NULL也可以。但是不能将一个值等于0的变量,拿来初始化指针。
8、在大多数编译环境下,若使用了未初始化的指针,该指针所占内存空间的当前内容被当做一个地址值,访问这个指针,实际上是访问一个本不存在的地址的本不存在的对象,并且未初始化的指针,很可能指向一些系统程序或者其他程序的地址,而用户无法使用或者
使程序崩溃。
9、指针的值还可能指向对象的下一个地址。
10、使用的指针必须必须必须是合法的指针,才能进行条件或者比较的操作。
11、void* 类型的指针可以存放任意对象的地址,但是不能直接操作void* 指针所指的对象,只有知道了指针的类型或者说指针所指的对象的类型,才能对所指的对象进行操作。只能存放对象的地址,而不能访问。
12、尽可能的在对象定义完后再去使用指针。
13、指针有两种情况,不需要进行类型匹配,一种是常量指针,其指向常量对象,但是也可以指向非常量对象,只是不能通过常量指针去修改其指向的对象,同常量引用一样,可以通过其他途径修改。
14、两个空指针允许相减,其结果为0;两个指针的比较必须在两个指针指向同一个对象或者对象的下一个位置。允许给空指针加上或减去一个0;