指针和数组容易产生不可预料的错误,其中一部分时概念上的问题:指针用于低级操作,容易产生与繁琐细节相关的错误,其他错误则源于使用指针的语法规则,特别是声明指针的语法。许多有用的程序都可不使用数组或指针实现,现代C++程序采用vector类型和迭代器取代一般的数组,使用string类型取代C风格字符串。
每个指针都有一个与之关联的数据类型,该数据类型决定了指针所指向的对象的类型。eg:一个int型指针只能指向int型对象。
注:理解指针声明语句时,从右往左阅读
eg:string *pstring; //把pstring定义为一个指向string类型对象的指针变量。
另一种声明指针的风格
在定义指针变量时,可用空格将符号*与其后的标识符分隔开来。
eg:string* ps; //把ps定义为一个指向string类型对象的指针。 符号*紧挨着类型名,强调这个声明语句定义的是一个指针
string *ps1,*ps2; //强调对象是一个指针
string* ps1,ps2; //把ps1定义为指针,ps2只是一个普通的string对象
一个有效的指针必然是三种状态之一:1.保存一个特定对象的地址;2.指向某个对象后面的另一个对象 3.0值,表示它不指向任何对象。
未初始化的指针是无效的,直到给该指针赋值后,才可以使用。