初霁有彩虹

After Awaken

此博客已经搬家

各位访客,你们好,我的博客已经搬到别的空间上去了,现在仍然保持着很高的更新频率。

内容更加精彩、页面更加美观!

查看更多更新,请访问http://rainy-bow.com

Related posts

你真的了解C语言?

75201569

我虽然经常标榜自己小学五年级就开始学C语言了,但时至今日,我依然不算是一个C语言专家。

初中时参加信息学竞赛,学习了Pascal,后来的很长一段时间内,我所写的C程序不过是将Pascal代码翻译成了C代码,甚至我还写过这样的一个程序,来把Pascal代码翻译成C代码。

可是,C语言的真谛是什么?我却一直说不清。是效率?不全面。是简洁?舍本遂末。是艺术?(小样,来深沉是吧?)算是吧,呵呵。

1. 宏定义的秘密:

对于很多非计算机专业的学C语言的人,他们有的是为了考计算机国家等级考试而学的C,有的是选修了学校的公共选修课学的C,我问过他们这样一个问题,宏定义实质上是什么?他们基本上都答不出来。

通俗地说,宏定义是一种字符串的替换。

很多学习Pascal的人一开始转到c时可能会用#define去“定义常量”,并可能会写成这样:

#define max=10;

或者:

#define max 10;

当他们明白宏会在编译前被替换为相应的字符串时,就会明白这样写的错误所在了。

宏定义的另外一个容易引起人误会的是在类型定义上面,比如:

#define pointtoint  int *

pointtoint a,b;

这时,你可造成不要以为a和b都是指向int的指针, 根据宏就是字符串替换,这段代码在编译前被替换成了

int * a,b;

看出来了吧,a是指向int的指针,而b不过是一个int型的变量。

2.此const非彼const

用过pascal的人都知道,const是定义一个常量的关键字,如果到了C里面,你还这么以为,那可就大错特错了。

在C语言中,const只是表示所声明的变量是只读的,也就是说这个变量不能出现在赋值语句的左边,但不排除可以用其他方式来改变它的值。

另外,const int *a和int const *a是完全等价的。

但是, const int *a 和 int * const a可就不是一回事了。

const int *a表示a是指向const int型的指针,a本身是可以出现在赋值语句的左边。

int * const a表示a是一个指向int型的const指针,a本身不能出现在赋值语句左边。

3.令人抓狂的类型

在上一小节中已经看到,const int *a,int const *a还有int * const a已经足够让人疯狂的了,但是,如果让你说清楚(*(void(*)())0)();是什么意思,你是不是把我杀了的心都有了?

告诉你,其实这是一个调用一个函数的语句,你相信吗?

我们一层一层的来,0前面的括号表示那是一个强制类型转换,转换成什么呢? 转换成void(*)(),这是一个返回型为void的函数指针,那么,(void(*)())0就是指指向内存地址为0的函数的指针了,把它记为fp,那么语句就变成了(*fp)(),这是指调用fp所指向的函数,这下明白了吧,整个一句话的意思是调用内存地址为0的函数。

再来挑战一下,你能弄明白char * const *(*next)()是什么意思吗?请自己查阅相关书籍,弄清楚个究竟。

如果想获得更多C语言的细节,你可以去一字一句地研读ANSI C的标准,或者你可以看一些C语言方面的著作,比如《C专家编程》《C陷阱与缺陷》《C和指针》,本文中的一些内容在这两本书中会有更详尽的解释。

Related posts

练习英语听力的好地方

约有半年没去过太傻网了,今天上去发现太傻网也赶上了web2.0的浪潮,加入了很多线上服务,打开页面,你会发现最顶部有一系列的听抄训练营,有VOA,BBS,CNN的,热爱美剧的同学也能找到适合自己的东西,不过太傻提供的美剧资源十分有限。

以VOA听抄为例,周一至周五每天会有一篇新闻,打开一篇新闻后,页面上方的框内有内容提要,还有一些注释,十分贴心。你可以在线听(Firefox用户得装IE TAB才能在线听),也可以下载下来听。下面是一个听抄框,边听边写,然后可以提交,同时你也能看到别的用户听写的内容。右边提供一个讨论区,大家可以针对一些没见过、听不懂的用法进行讨论。

整个一个平台功能非常完整,这个平台将很多志同道合的人聚到了一起,大家不用再像过去那样自己找听力材料、听力原文,遇到不懂的地方再上BBS发贴求助了。

欢迎大家体验。

Related posts

这个很有意思,同学告诉我时我笑了N久,比如,有四个人,身上分别穿着印有N,I,K,E四个字母的衣服,进到赛场后他们坐在了一起,这样也是不行了,要把他们分开,或者赶出去,再比如,一群人进入赛场后,坐在一起,构成了一个对勾,那也是不行的,呵呵,但是,相信会有人有更有创意的办法来“对付”这规定。

Related posts

看看你的网站有多不和谐

网站不良信息在线检索系统

页面十分简洁,只有一幅图 和一个输入网址的框,尝试输入google.com,有一条结果不得不提一下,

存在非法内容:约6,260,000条记录网络封锁

别的结果数量级几乎都是不用逗号就可以解决的,呵呵

大家自己测试一下,就可以知道哪些内容“上面”觉得比较敏感了。

然后,我研究了一下这个网站的原理。结果发现,居然就是以 site:google.com 加上敏感关键字在baidu.com上进行搜索,并统计返回结果数,实在不甚高明,而且极不科学。例如,以新华网进行测试,会发现:

存在非法内容:约356,000条记录共产党
存在非法内容:83条记录产党
存在非法内容:约6,820条记录反共
存在非法内容:4条记录反G
存在非法内容:约703,000条记录中共
存在非法内容:约10,800条记录洗脑

……

这是不是自己抽自己的脸呢?

Related posts

关于FUCK的起源

古时候,英国不允许随便做爱,除非你是贵族,国王。

如果有些人想要小孩了,就到国王那申请,国王就会发给他们一个小牌,挂在门口,证明他们是合法的。

牌子上写的是Fornication Under Consent of the King(在国王允许下做爱)

据说这就是FUCK的起源。

以上内容未经证实,仅供娱乐。

Related posts

河边的俯卧撑

“</p

真是与时俱进啊

你天你俯卧撑了吗?

点击访问更多内容

Related posts

下一代协作平台

Jazz 是 IBM Rational 面向软件交付技术的下一代协作平台。Jazz 平台经过精心设计,专门面向全球化和跨地域团队开发,将改变人们协作构建软件的方式——提高软件交付的协作性、效率和透明度。您可以将 Jazz 技术视为一个可扩展的框架,能动态地集成和同步与软件开发项目关联的人员、流程和资产。

看了它的介绍,我觉得最吸引人的就是它的社区性,这是托Web2.0之福。而目前的SVN的项目管理和开发人员的交流是分离开的。社会化的团队开发,能够让整个团队更融洽,效率更高。

另外,有一些猜想,如果协同开发平台能够在即时性上做的更好,那将是一个巨大的突破,我想我们的准备开发的super chat可能可以解决这个问题

Related posts

竖排文字转换工具书

了 古 前 的 的 谁
它 老 老 互 中 能
的 版 祖 联 国 想
用 式 宗 网 , 像
武 竟 们 上 在 ,
之 会 创 , 最 在
地 又 造 千 开 当
。 有 的 年 放 代

此古书式竖排格式由http://www.cshbl.com/gushu.html在线转换工具生成
欢迎大家来尝试。仔细想想很有意思的。

Related posts

三个月前,这群人还在世界各地挥舞着五星红旗,举着自制的标语横幅,为奥运火炬的荣光而抗争,还在国外的论坛上用不纯熟的英语,驳斥着西方媒体的傲慢和偏见,还在msn和QQ上,用红色的心连成一串,他们高呼:中国加油!北京加油!他们跳进冰冷的水池中,举起五星红旗。

一个月前,这群人排着队捐钱,抢着献血,抢着奔赴灾区,为素不相识的同胞痛哭不止。他们低头默哀,昂首呐喊,四川挺住!中国加油!

我想,他们原本不是暴力的人群吧
我想,他们应该爱这个国家吧
我想,他们的爱,是那种根本没有想到过任何回报的爱吧

他们有耐心,一只假的不能再假的老虎,等了8个月
他们忍耐,再高的物价、房价、油价,默默承受,他们相信这是外国资本的进攻手段,他们期待着中国能够挺住,熬过去,只要大家的心在一起
他们失业了,只怪自己无能,怪自己性格古怪,沟通能力不强
他们拿着低廉的薪水,却要对得起老板,不要命的劳动
他们为自己国家的企业被外国人的价格讹诈而愤怒
他们为国有财产流失,为中国金融问题,为中国矿产资源的出口痛心
他们不要特权,甚至对特权的存在表示宽容
他们弄不懂股市
他们娶不到妻子
他们的肺到50岁就是黑色的
这些他们都能忍

人生一世,草木一秋
他们只是想知道,什么是公正

原帖系钱老师博客中的一篇回复

Related posts

« Previous Entries