最初了解到正宁11.16校车惨剧的时候,我已经弄不懂自己是不是已经麻木了。上海11.15火灾、温州7.23动车追尾、邵阳9.9沉船,当初这些事故的报道还历历在目,言犹在耳,现在我已经无法再发出更大的悲悯了。
我不会去罗列过去一年的事故大案,更不会按照惨度去排序,因为逝去的都是生命,而生命无贵贱。今天在看到遇难孩童下葬的新闻图片时,我的心灵被重重地敲打着。那些花朵也许还在好奇风为什么会吹,却来不及绽放就凋谢了。
念叨着那些花朵,心里满是矛盾,引用微博里的一段话:
能买光全世界的飞机,却买不起一辆校车;能把卫星送入太空,却造不好一座小桥;能给别国花数亿,却不肯多几所小学;一年能吃掉几十艘航母,却逼着孩子出午饭钱。
我觉得自己不是一个愤青,算是一个理智的人,所以像普及美式校车一类的妄想是不会做的。我只是在想,如果把中国特色的公车换以中国标准的校车,那该是一件多么积德的事情。
[ Read More » ]
20 11 月, 2011 in
Thinking |
No Comments
计算机系统的一个基本概念就是,从机器的角度来看,程序仅仅只是字节序列,机器没有关于初始源程序的任何信息。
在几乎所有的机器上,多字节对象都被存储为连续的字节序列,对象的地址为所使用字节中最小的字节。但是多个字节如何排布则有两种不同的方式。最低有效字节在最前面的方式,叫做小端法。最高有效字节在最前面的方式,叫做大端法。
绝大多数时候,字节顺序不关紧要,但是有三种情形必须考虑,首先,在不同类型的机器之间通过网络传送二进制数据;其次,反编译代码,阅读表示整数数据的字节序列;还有,在C语言中使用强制类型转换。
[ Read More » ]
7 11 月, 2011 in
Software | tags:
CSAPP |
No Comments
数组名所代表的就是该数组最开始的一个元素的地址。其和指针是不同的,区别在于指针是一个变量,但数组名不是变量。
当把数组名传递给一个函数时,实际上传递的是该数组第一个元素的地址。在被调用函数中,该参数是一个局部变量,因此,数组名参数必须是一个指针,也就是一个存储地址值的变量。
如果p是一个指向数组中某个元素的指针,那么p+=i将对p进行加i的增量运算,使其指向指针p当前所指向的元素之后的第i个元素。对数组元素a[i]的引用也可以写成*(a+i)这种形式。
[ Read More » ]
20 10 月, 2011 in
Software | tags:
C |
1 Comment
对变量的命名与符号常量的命名存在一些限制条件,名字是由字母和数字组成的序列,但其第一个字符必须是字母。下划线“_”被看作是字母,通常,变量名使用小写字母,符号常量名全部使用大写字母。
对于内部名而言,至少前31个字符是有效的。函数名和外部变量名包含的字符数目可能少于31,这是因为汇编程序和加载程序可能会使用这些外部名,而语言本身是无法控制加载程序和汇编程序。对于外部名,ANSI标准仅保证前6个字符的唯一性,并且不区分大小写。
任何变量的声明都可以使用const限定符限定。该限定符指定变量的值不能被修改。对于数组而言,const限定符指定数组所有元素的值都不能被修改。
默认情况下,外部变量和静态变量都被初始化为0。未经显式初始化的自动化变量的值为未定义值(即无效值)。
[ Read More » ]
18 10 月, 2011 in
Software | tags:
C |
No Comments
在程序中使用“幻数”是个坏习惯,它几乎不能提供任何信息。要避免这个问题,就是使用#define指令把符号名定义为一个特定的字符串。这使我想起来了在《深入Java虚拟机》一书中看到的一段话:
例如每个class文件必须是以四个同样的字节开始:魔数0xCAFEBABE。这个魔数的用处是让class文件分析器很容易分辨出某个文件有明显问题而加以拒绝。1
上面的“幻数”与“魔数”应该都是英文术语magic number的翻译,我把它理解成一个有特定意义的数字,这个数字没有名字,没人知道它代表什么意思,因此阅读程序代码的人就可能糊涂。——当然,0xCAFEBABE不会有人去读它,我只是想到了magic number这个词而已。
[ Read More » ]
15 10 月, 2011 in
Software | tags:
C |
No Comments