倍可亲

岳东晓 (已有 1,098,557 人访问过博主空间)

http://www.backchina.com//u/293539

两堂C/C++基础课:()和 []

作者:岳东晓  于 2011-4-10 14:33 发表于 最热闹的华人社交网络--贝壳村 通用分类:热点杂谈|已有3评论

基础课一:函数调用算符()

我在前文中提到下面这行难住10岁开始编程的牛博士的代码

local = (char *(*)()) inc_1;

很多人号称学过C,但是看了这行代码看不懂之后,说这是垃圾。其实这是一句必要的code,程序员在写的时候并没有在故弄玄虚,而是写了最简短的代码。这是一个很早以前的程序中的一行代码,并非编造。而且是一行简单的代码--如果你能懂C。

问题在于,很多人学了C,并不懂C语言,他们只会文科C:就是模仿一些pattern,依样画葫芦,真要变通一下,就搞不清了。要成为高等电民,得学会理工思维,搞清原理,否则跟劳工差不多,只会copy&paste。

看上面这段代码右边,最外面是一层括弧后跟一个inc_1,所以这是一个cast 语句,也就是括号里面必须是一个type。什么type呢?一看里面的()的算符就知道了,()叫函数调用算符(当然这里的作用不是调用函数,而是声明类型), call operator。所以里面是一个pointer to function,而这个function的return type是 char*。

当然,程序员如果稍微勤快点,他可能会这么写

typedef char* (*ptr_func)();

local = (ptr_func) inc_1;


基础课二:下标算符 [ ]

C++基本是C的一个superset,因此C里的表达在C++绝大部分是合法的。

E1 [E2] 类型的expression 为postfix-expression的一种。

其中E1为postfix-expression, E2为expression. 

E1[E2]的语义是 *(E1+E2).

所以我们只要求 E1+E2 产生一个指针。根据+运算的属性,只要E1或者E2中的任一个是指针即可。换言之,E1[E2]与E2[E1]可能是完全等价的(排除[]被重载的情况),如果你看到 10[p]这样的表达不要奇怪。


  博主二维码,光标右键点图片可下载

高兴

感动

同情

搞笑

难过

拍砖

支持
2

鲜花

刚表态过的朋友 (2 人)

发表评论 评论 (3 个评论)

回复 oneweek 2011-4-10 21:25
不错
回复 awang9988 2011-4-11 11:06
NB
回复 UGESONGYANGZ 2011-4-16 23:07
老岳,知道你打官司的事情被黄光锐绝赞为爱国志士,上升到民族英雄的高度。也不知道这几年你公司的事业是否还顺利,孩子怎样了?不知道你是否还记得刚来美时的初衷,看到你这个模糊的当年的照片,我们当时都看好你这个曾经是青年才俊,希望你给母校和咱海外学子增光。可是,最近看了你的一些历史政经评论,觉得你已经不知从何时开始失去了认真严谨的作风,很多文章不在是经得起推敲的一时心血来潮之作,竟然跌落到浮躁愤青的层次。让人扼腕。去美国真是彻底毁掉了一个曾经的英才。。。 老哥和你一样不再年轻,中国也不再属于你我,好好做个学问人吧。




Read more: 看看美国人怎么评论日本地震的 - 岳东晓的日志 - 贝壳村 -

facelist doodle 涂鸦板

您需要登录后才可以评论 登录 | 注册

岳东晓最受欢迎的博文
  1. 目前所见最壮观的海啸视频 [2011/03]
  2. 建议旅日华人尽早逃命--日本核反应堆氢爆分析 [2011/03]
  3. 日本核堆再次起火,落砂机时报质疑为何日本不如中国 [2011/03]
  4. 贺梅姐弟妹三人平安回到中国(图、真相) [2011/08]
  5. 美国人7年前就已预见日本将成为核废墟 [2011/03]
  6. 日军暴露出战斗力低下 [2011/03]
  7. 为什么8.9级地震日本房子没倒 [2011/03]
  8. 桑兰案律师已经势成骑虎 [2011/05]
  9. 与贺梅父母的通话(2011/07/02) [2011/07]
  10. 海明应坦诚回应公众对他履历的怀疑 [2011/06]
  11. 贺梅将于近日返回中国 [2011/08]
  12. 桑兰案海明服软,承认错误、向被告道歉并作出赔偿 [2012/03]
  13. 技术歧视-拉登被击杀竟然是现场直播 [2011/05]
  14. 桑兰案状纸被法院拒收--搞路不清就上联邦法院 [2011/05]
  15. 日本核反应堆会发生核爆吗? [2011/03]
  16. 桑兰律师不长进,两个动议均被扔出法院 [2011/06]
  17. 网友呼叫海明 [2011/06]
  18. 贺梅母亲解答有关贺梅子妹三人来美国费用的问题 [2011/08]
  19. 群众游行导致大规模军事镇压其实是法制建设不完善的后果 [2011/06]
  20. 给贝克捐款的人应该至少替他把用于剥夺罗秦父母权的律师费交了 [2011/08]
  21. 贺梅来美的思维定式看劣等洋奴的弱智 [2011/08]
  22. 罗秦严正警告使用贺梅名义与形象骗捐的个人与团体 [2011/09]
  23. 为贝克募捐的人应该向贝克、罗秦道歉 [2011/08]
  24. 探讨贺梅案中可能存在的种族问题 [2011/09]
  25. 天安门挡坦克的青年证明解放军是人民的军队 [2012/06]

关于本站 | 隐私权政策 | 免责条款 | 版权声明 | 联络我们 |手机版

Copyright © 2001-2013 海外华人中文门户:倍可亲 (http://www.backchina.com) All Rights Reserved.

程序系统基于 Discuz! X3.1 商业版 优化 Discuz! © 2001-2013 Comsenz Inc.

本站时间采用京港台时间 最新更新:GMT+8, 2014-12-28 04:21

返回顶部