关于数组和指针的一些思考

先从书上抄一些例子来理解指针的定义和初始化:
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

根据②③可以推测指针变量初始化的时候需要一个变量的地址,
由②可知地址为0的时候表明它不指向任何对象,
再根据⑥易知使用对象的地址的时候不需要加上*













全部评论

相关推荐

点赞 收藏 评论
分享
牛客网
牛客企业服务