快速业务通道

完整的学习C++的读书路线图(2)

作者 佚名技术 来源 程序设计 浏览 发布时间 2012-06-29
a)[9];的效果一样!

3.const和volatile在类型声明中的位置

在这里我只说const,volatile是一样的「注12」!

注12:顾名思义,volatile修饰的量就是很容易变化,不稳定的量,它可能被其它线程,操作系统,硬件等等在未知的时间改变,所以它被存储在内存中,每次取用它的时候都只能在内存中去读取,它不能被编译器优化放在内部寄存器中。

类型声明中const用来修饰一个常量,我们一般这样使用:const在前面

const int;//int是const

const char*;//char是const

char* const;//*(指针)是const

const char* const;//char和*都是const

对初学者,const char*;和 char* const;是容易混淆的。这需要时间的历练让你习惯它。

上面的声明有一个对等的写法:const在后面

int const;//int是const

char const*;//char是const

char* const;//*(指针)是const

char const* const;//char和*都是const

第一次你可能不会习惯,但新事物如果是好的,我们为什么要拒绝它呢?:)const在后面有两个好处:

A. const所修饰的类型是正好在它前面的那一个。如果这个好处还不能让你动心的话,那请看下一个!

B.我们很多时候会用到typedef的类型别名定义。比如typedef char* pchar,如果用const来修饰的话,当const在前面的时候,就是const pchar,你会以为它就是const char* ,但是你错了,它的真实含义是char* const.是不是让你大吃一惊!但如果你采用const在后面的写法,意义就怎么也不会变,不信你试试!

不过,在真实项目中的命名一致性更重要。你应该在两种情况下都能适应,并能自如的转换,公司习惯,商业利润不论在什么时候都应该优先考虑!不过在开始一个新项目的时候,你可以考虑优先使用const在后面的习惯用法。

四.参数可变的函数

C语言中有一种很奇怪的参数“…”,它主要用在引数(argument)个数不定的函数中,最常见的就是printf函数。

printf(“Enjoy yourself everyday!\n”);

printf(“The value is %d!\n”, value);

……

你想过它是怎么实现的吗?

1. printf为什么叫printf?

不管是看什么,我总是一个喜欢刨根问底的人,对事物的源有一种特殊的癖好,一段典故,一个成语,一句行话,我最喜欢的就是找到它的来历,和当时的意境,一个外文翻译过来的术语,最低要求我会尽力去找到它原本的外文术语。特别是一个字的命名来历,我一向是非常在意的,中国有句古话:“名不正,则言不顺。”printf中的f就是format的意思,即按格式打印「注13」。

注13:其实还有很多函数,很多变量,很多命名在各种语言中都是非常讲究的,你如果细心观察追溯,一定有很多乐趣和满足,比如哈希表为什么叫hashtable而不叫hashlist?在C++的SGI STL实现中有一个专门用于递增的函数iota(不是itoa),为什么叫这个奇怪的名字,你想过吗?

看文章我不喜欢意犹未尽,己所不欲,勿施于人,所以我把这两个答案告诉你:

(1)table与list做为表讲的区别:

table:

-------|--------------------|-------

item1 | kadkglasgaldfgl | jkdsfh

-------|--------------------|-------

item2 | kjdszhahlka | xcvz

-------|--------------------|-------

list:

****

***

*******

*****

That''s the difference!

如果你还是不明白,可以去看一下hash是如何实现的!

(2)The name iota is taken from the programming language APL.

而APL语言主要是做数学计算的,在数学中有很多公式会借用希腊字母,

希腊字母表中有这样一个字母,大写为Ι,小写为ι,

它的英文拼写正好是iota,这个字母在θ(theta)和κ(kappa)之间!

你可以http://www.wikipedia.org/wiki/APL_

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号