Chinaunix首页 | 论坛 | 博客
  • 博客访问: 236992
  • 博文数量: 61
  • 博客积分: 125
  • 博客等级: 入伍新兵
  • 技术积分: 100
  • 用 户 组: 普通用户
  • 注册时间: 2012-07-23 23:28
文章分类

全部博文(61)

文章存档

2014年(37)

2013年(21)

2012年(3)

分类: C/C++

2014-08-09 10:48:57

原文地址:常见指针定义解读 作者:Aquester

最近做的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。


除此之外,仍然有很多人搞不明白构造和析构的次顺,不建议去背,带理性去思考,顺序错了,可是要出大问题的,比如子类构造中可以使用父类的成员,那么必须父类要构造在前。

阅读(1283) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~