C诡异离奇,缺陷重重,却获得了巨大的成功。
---- --Dennis Ritch
好记性不如烂笔头,但是作为一个计算机专业的小菜选手,用笔而不同键盘是不是有点儿对不起互联网了,怎么的也要挤进这个知识互联共享的大家庭里。最近在看基本编程相关的书籍,这本曾经读过的[美]Peter Van Der Linden著 徐波 译的《C专家编程》回头看一看,发现有很多知识点,虽然和其他文章有重复,但是鉴于它的重要性和易错性,决定每天再看一看,并用bolg记录下来,让自己加深印象,深刻理解,这也是一个重复学习和监督的过程。我始终相信技术类的书不能一目十行,需要一步一步的向前走,想想以前也学了很多,看了很多,但是真正能握在手中的又有多少。这可不是练太极--“无形胜有形”!时间虽然紧张,但还得脚踏实地慢慢来,1*1虽然简单,但是每个人都曾付出努力去背过!不成功怎么知道它的简单,不失败怎么知道它的艰难。切记心浮气躁,切记走马观花,切记眼高手低!在这个过程中如果有幸也能帮到您一点,我也是十分的高兴,如果文章有错,敬请指出,不深感激!文章也会不断的进行完善,以后可能还有修改增删。C语言的出现证明了一件事儿,那就是失败时成功之母。因为一直被人们朝圣的C语言竟然源于一个失败的项目。1969,通用电气、麻省理工工学院和贝尔实验室联合创立了一个庞大的项目--Multics。该项目的目的是创建一个操作系统,但是最后失败了。当心灰意冷的贝尔实验室的专家们撤离Multics工程后,他们又去寻找其他的任务。其中一个叫Ken Thompson的研究人员对另一个操作系统很感兴趣。所以Thompson和Denis Ritchie自娱自乐,把Thompson的“太空旅行”软件移植到不太常用的PDP-7(由迪吉多公司所研发的一款迷你电脑)系统上。与此同时,Thompson为PDP-7编写了一个简单的OS,它比Multics简单的多,并取名为UNIX。
语言早期的发展:BCPL(Basic Combined Programing Language)--基本组合编程语言。
1、编译器设计者的金科玉律:效率就是一切。例如:#define a(y) b(y) a(x)被替换为:b(x); 而如果是#define a (x) b(y) 此时: a(x) 被替换为:(x) b(y)x这将被替换的面目全非,所以宏就是单纯的文本替换,使用时要注意。
老式的函数申明方法:char * strcpy(det,src) char *det,*src;{} 现在:char *strcpy(char *det,char *src){}可以省略形参名称,但是不能省略类型;
例如;char * cp; const char *ccp; //指向一个具有const限定的字符指针; ccp=cp;//合法的,没有警告; cp=ccp;//结果会产生编译警告;const最有用之处就是用它来限定函数的形参,这样 该函数将不会修改实参指针所指的数据。
int array[]={1,2,3,4,5}; #define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) int main() { int d=-1,x; if(d<=TOTAL_ELEMENTS) { x=array[d+1]; } }运行此程序,你会发现改程序if条件不为真,这是why?
if(d<=(int)TOTAL_ELEMENTS-2) //OK注:尽量不要使用无符号类型的数据,这样会引起不必要的麻烦。只有在位段和二进制掩码的时候才可以使用无符号数。
#define TOTAL_ELEMENTS (sizeof(array)/sizeof(array[0])) (1) 而不是: #define TOTAL_ELEMENTS (sizeof(array)/sizeof(int)) (2)如果是(2)式,我们将array变成char或者float类型,就会出现意想不到的结果。但是前者可以在不修改#define语句的情况下改变数据组的基本类型(比如把int变为char,float等等)。
自由软件基金:(Free Software Foundation)是一个特殊的组织,它由MIT的顶级黑客Richard Stallman所创立。目标是软件应该是免费的,所有人都可以自由使用。他雄心勃勃想建立一个UNIX的自由软件实现方案,成为GUN(代表GUN is not UUIX。