关于数组和指针的一些思考
先从书上抄一些例子来理解指针的定义和初始化:
1、指针变量的定义
vector<int> *pvec; //pvec can point to a vector<int>
int *ip1,*ip2; //ip1 and ip2 can point to an int
string *pstring; //pstring can point to a string
double *dp //dp can point to a double
理解这些定义语句书上说可以从右往左阅读,比如:
vector<int> *pvec 可以理解为 pvec是一个指向vector<int>类型变量的指针变量
int *ip1,*ip2 可以理解为*ip1和*ip2是一个指向int类型变量的指针变量
以此类推……
2、指针可能的取值
一个有效的指针必然是以下三种状态之一:
1)、保存一个特定对象的地址
2)、指向某个对象后面的另一个对象
3)、0值
若指针保存0值,表明它不只指任何对象。未初始化的指针是无效的,直到给该指针赋值后,才可使用它。
下列定义和赋值都是合法的:
①int ival =1024;
②int *pi=0; //pi initialized to address no object
③int *pi2=&ival; //pi2 initialized to address of ival
④int *pi3; //ok,dangerous,pi3 is uninitialized
⑤pi = pi2; //pi and pi2 address the same object, e.g. ival
⑥pi2 = 0; //pi2 now addresses no object