zoukankan      html  css  js  c++  java
  • 常见指针定义解读

    最近做的C/C++技术面试比较多,发现了一些共同的问题,对于如下所示的指针认识,多数面试者都答错了,作为过来人,这种情况还可以理解的,放在一起确实有些复杂。
    int *p;
    int *p[8];
    int (*p)[8];
    int (*p)();


    为了能朴素的理解,加上注释说明,这下是不是可以非常轻松明白的掌握了?
    int *p;      // p为指向int值的指针,也可以说是指向一维数组的指针,假如有一个一维数组:int m[8],则可:p = m;
    int *p[8];   // p为一个一维数组,数组元素为int*类型,它和数组int p[8]都是同一类型,只不过一个元素类型为int*,一个是int
    int (*p)[8]; // p为一个指向二维数据的指针,数组元素为int类型,假如有二维数据:int m[1][8],则可:p = m;
    int (*p)();  // p为一个指向函数的指针,假设有一个函数:int foo(),则可:p = foo;


    下面两个了?
    int (**pa)[8];
    int (**pb)();
    不用怕,只是多了个*,也就是指向指针的指针。假设有:int m[1][8]; int (*p)[8] = m;,则:pa = &p。


    除此之外,仍然有很多人搞不明白构造和析构的次顺,不建议去背,带理性去思考,顺序错了,可是要出大问题的,比如子类构造中可以使用父类的成员,那么必须父类要构造在前。
  • 相关阅读:
    力扣第945题 使数组唯一的最小增量
    力扣第365题 水壶问题
    力扣面试题40 最小的k个数
    力扣第409题 最长回文串
    力扣第46题 全排列
    力扣第1160题 拼写单词
    力扣面试题01.06 字符串压缩
    力扣第695题 岛屿的最大面积
    树莓派 鼠标自动消失
    树莓派 VNC 远程桌面 同一个桌面
  • 原文地址:https://www.cnblogs.com/aquester/p/9891588.html
Copyright © 2011-2022 走看看