指针:指针用于指向对象;
指针初始化和赋值操作的约束
1、0值常量表达式(NULL)
2、类型匹配的对象的地址
3、另一对象之后的下一地址
4、同类型的另一个有效指针
注意:避免使用未初始化的指针
void指针可以保存任何类型对象的地址,它只支持几种操作:
1、与另一指针比较
2、向函数传递void指针或从函数返回void指针
3、给另一个void指针赋值
注意:不允许使用void指针操作它所指向的对象
指针与引用区别:
1、引用总是指向某一个对象,定义引用时没有初始化时错误的
2、给引用赋值修改的时该引用所关联的对象的值,并不是时引用于另一个对象关联。引用一经初始化,其指向的对象不可以改变
指向指针的指针,即多级指针。本质一样
指针与const:
最重要:c++强制要求指向const对象的指针也必须具有const特性;
不能使用void*指针保存cosnt对象的地址,而必须使用const void*指针保存const对象的地址。允许把非const对象的地址赋值给指向const对象的指针。
指向const对象的指针:
const int *a;int const * a;
const指针:
int *const a;
指向const对象的const指针:
const int * const a;
指针与typedef
typedef string *pstring;
const pstring cstr;
声明const pstring时,cosnt修饰的是pstring的类型,这是一个指针,因此该声明语句应该是把cstr定义为指向string类型对象的const指针,这个等价于:
string *cosnt cstr;