Chinaunix首页 | 论坛 | 博客
  • 博客访问: 8139227
  • 博文数量: 594
  • 博客积分: 13065
  • 博客等级: 上将
  • 技术积分: 10324
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-26 16:44
个人简介

推荐: blog.csdn.net/aquester https://github.com/eyjian https://www.cnblogs.com/aquester http://blog.chinaunix.net/uid/20682147.html

文章分类

全部博文(594)

分类: C/C++

2014-07-08 15:59:58

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


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

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

Aquester2014-10-08 15:41:40

wangxx0729:构造和析构的次序可以理解为尊老爱幼后自己,生(构造)时先父类后子类最后是自己,死(析构)时先自己后子类最后是父类。活着的机会让给父和子,灭亡时冲在前。

这个还是需要记忆,不用记忆的方法是反过来想:如果不这样会有什么问题,比如父类晚于自己,则的自己的构造函数中无法访问父类成员,显然这和事实不符。

回复 | 举报

Aquester2014-08-15 21:40:07

wangxx0729:构造和析构的次序可以理解为尊老爱幼后自己,生(构造)时先父类后子类最后是自己,死(析构)时先自己后子类最后是父类。活着的机会让给父和子,灭亡时冲在前。

文明上网,理性发言...

回复 | 举报

wangxx07292014-07-22 14:50:20

构造和析构的次序可以理解为尊老爱幼后自己,生(构造)时先父类后子类最后是自己,死(析构)时先自己后子类最后是父类。活着的机会让给父和子,灭亡时冲在前。