C语言是1972年由贝尔实验室的两名科学家丹尼斯·里奇和肯·汤普逊在B语言基础上发明的一种高级语言,以实用为目标。随着计算机的发展,其他的实用语言已经被丢在角落,只有C仍然是主流语言,并且是首选的编程语言之一。
它的长盛不衰必定不是偶然,而是它本身的优点的必然结果。
C语言的优点:
1.其设计理念让用户更轻松的完成自顶向下的规划、结构化编程和模块化设计,因此更易懂、更可靠。
2.C语言具有高效性。充分利用计算机优势,程序紧凑,运行速度快(具有汇编语言才具有的微调控能力,根据具体情况微调程序获得最大的运行速度或者最有效的使用内存)。
3.可移植性。在某一系统中编写的C程序直接经过少许修改(简单修改头文件中少许项)或者不用修改就可以在其他系统上运行。大部分语言都想成为可移植语言,可惜只有C语言是其中的佼佼者,绝大部分的计算机结构(除针对硬件设备或者某些操作系统特殊功能)以及大部分计算机(如UNIX,Windows)都可以使用C编译器(针对某个系统)。
4.强大而灵活。许多编译器解释器还有UNIX操作系统均由C语言编写。C语言还慎入到许多其他的领域,解决众多物理数学问题。
5.面向程序员。与现在许多面向对象的编程语言不同,C语言是为了满足程序员而设计的。程序员可以利用C访问硬件、操控内存中的位。并且C语言有丰富运算符,能让程序员简洁的表达自己的意图。但是相比于C++,C语言的限制更多,程序员可能会经常犯一些莫名其妙的错误。
C语言的缺点:
1.C语言在指针有关方向的编程错误往往难以察觉。
2.C语言中有大量复杂运算符,写出的代码或许能够使人极为费解。
编译器:
在学C语言之前,我们一定了解过机器语言。
机器语言才是机器能够读懂的语言,是由无数个0与1构成的。通常计算机进行运作,就是执行一个个的指令集,这些指令也是以数字的方式储存的。在最早的时候,我们为了写出这样的指令来让计算机为我们工作,就必须用计算机能懂的机器语言来创建程序。
这是一项十分繁杂艰苦的工作,时至今日,我们已经不再必须使用机器语言了,仅仅靠我们可以理解的语言便可以写出这样的指令集,这种语言就是高级汇编语言。
当然,并不是随着时间的流逝,机器逐渐读懂了汇编语言,而是我们终于写出了一种程序,可以让我们写的汇编语言转换为机器可以看懂的机器语言,这就是——编译器。
使用合适的编译器或者编译器集,我们就可以把就可以把一种高级语言程序转换成供各种不同类型的CPU使用的机器语言程序。
编译机制:
我们使用C语言编写程序时,编写的内容被储存在文本文件(不是字处理文件,否则会使用.txt拓展名)中,该文件被称为源代码文件,大部分C系统要求这种文件以.c结尾(即chengxu.c结构,基本名.拓展名)。
C编程的基本策略是,将程序源代码转换成可执行文件。这其中的转换需要通过编译和链接来完成这一过程。
编译器:将源代码转化成中间代码,放在目标代码文件(目标文件,拓展名.obj)中。
中间代码有多种形式,最常见的是机器语言代码。虽然已经转换完成,但是计算机却不能运行。因为此时依旧是源代码,缺少必要程序,还不是一个完整的程序。
这里的必要程序就是启动代码与库函数。
启动代码充当程序与操作系统之间的接口。系统不同,处理程序的方式便不同,所以不同系统的启动代码就不一样。
库函数被包含在库文件当中,一般是写在程序最前端的头文件。
链接器:将中间代码、系统的标准启动代码与库代码合并,生成可执行文件(拓展名.exe)。
对于库代码,链接器只会将程序中需要的库函数代码提取出来。
语言标准:
若在编写程序时未使用机器特定的编程技术仍想要它的运行情况在任何实现中相同,我们就需要同一个标准。
语言标准与标准库、标准库函数有关。(看不太明白,不太了解,希望大神补充!)
有C90、C99、C11标准几种。