• 即将更新编译原理,机器学习,JavaScript,HTML/CSS等文章,谢谢关注~
  • 由于算法限制,搜索时注意简化关键字,谢谢支持~
  • 网站不兼容IE5.0及以下,请使用主流浏览器访问.
  • C++指针总结

    指针与变量

    • int p; //这是一个普通的整型变量.
    • int *p; //首先从P 处开始,先与*结合,所以说明P是一个指针,然后再与int结合,说明指针所指向的内容的类型为int型.所以P是一个返回整型数据的指针。

    指针与数组

    • int p[3]; //首先从P 处开始,先与[]结合,说明P是一个数组,然后与int结合说明数组里的元素整型的,所以P是一个由整型数据组成的数组.
    • int *p[3]; //首先从P 处开始,先与[]结合,因为其优先级比*高,所以P是一个数组,然后再与*结合,说明数组里的元素是指针类型,然后再与int结合,说明指针所指向的内容的类型是整型的,所以P是一个由返回整型数据的指针所组成的数组.
    • int (*p)[3]; //首先从P 处开始,先与*结合,说明P 是一个指针然后再与[]结合(与”()”这步可以忽略,只是为了改变优先级),说明指针所指向的内容是一个数组,然后再与int 结合,说明数组里的元素是整型的.所以P是一个指向由整型数据组成的数组的指针.

    指针与函数

    • int p(int); //从P 处起,先与()结合,说明P 是一个函数,然后进入()里分析,说明该函数有一个整型变量的参数然后再与外面的int结合,说明函数的返回值是一个整型数据.
    • Int (*p)(int); //从P 处开始,先与指针结合,说明P 是一个指针,然后与()结合,说明指针指向的是一个函数,然后再与()里的int结合,说明函数有一个int 型的参数,再与最外层的int结合,说明函数的返回类型是整型,所以P 是一个指向有一个整型参数且返回类型为整型的函数的指针.
    • 调用:p(实参)

    指针与对象

    • Point p;//声明一个Point类对象
    • Point *Ptr=&p; //声明一个指向Point类对象p的指针Ptr通过指针调用对象成员
    • Ptr->数据成员名((*Ptr).数据成员名)Ptr->函数成员名((*Ptr).函数成员名)

    指向类的非静态成员的指针

    • 1声明

    –声明指向公有数据成员的指针类型说明符  类名::*指针名;

    –声明指向公有函数成员的指针类型说明符  (类名::*指针名)(参数表);

    • 2指向

    –指针指向数据成员指针名=&类名::数据成员名;

    –指针指向函数成员指针名=类名::函数成员名;

    • 3调用

    –通过对象名(或对象指针)与成员指针结合来访问数据成员

    对象名.* 类成员指针名    或:

    对象指针名—>*类成员指针名

    –通过对象名(或对象指针)与成员指针结合来访问函数成员

    (对象名.* 类成员指针名)(参数表)   或:

    (对象指针名—>*类成员指针名)(参数表)

    指向类的静态成员的指针

    • 对类的静态成员的访问不依赖于对象
    • 可以用普通的指针来指向和访问静态成员
    this指针(指向当前对象的指针)

    –当通过一个对象调用成员函数时,系统先将该对象的地址赋给this指针,然后调用成员函数,成员函数对对象的数据成员进行操作时,就隐含使用了this指针。

    void类型的指针

    void *pv;       //可以声明void类型的指针

    • int *pint; int i;
    • pv = &i;   //void类型指针指向整型变量
    • pint = (int *)pv; // void指针赋值给int指针需要类型强制转换

    指向常量的指针变量

    • 格式: const 类型标识符 *指针变量名;
    • 通过该指针变量只能读取它所指的常量的值
    • 不能通过指针变量来改变指对象的值,但指针变量本身值可以改变,可以指向另外的对象。

    指针常量

    • 格式:

    类型标示符 *const 指针变量名=初始指针值

    • 该种指针在定义时必须初始化,指针本身的值不能被改变,但可以通过它对其所指变量的值读取或修改
    读者评分
    [评分人数: 3 平均分: 5]

    评论

    OmegaXYZ