感谢您的阅读与点赞!欢迎关注:「大猫玩程序」,查看C语言系列文章
C语言之父
C语言背景20世纪70年代早期,贝尔实验室的Dennis Ritchie致力于开发UNIX系统。为了实现这个系统必须要有一种语言,能够生成简洁、快速的程序,并能有效地控制硬件。
在C语言诞生之前,程序员传统使用汇编语言来满足需求,汇编语言依赖于计算机的内部语言。但是汇编语言是低级语言,它用来直接操作硬件,直接访问CPU寄存器和内存。如果要将汇编语言移植到另一台机器上,就必须使用不同的汇编语言来重新编写程序,费时费力。
但是UNIX是为了不同硬件平台设计的,不针对特定硬件,在这种情况下,Ritchie希望有一种语言能将低级语言的效率、硬件访问能力和高级语言的通用性、可移植性融合在一起,于是他在传统语言的基础上开发了C语言。
C语言编程原理C语言的编程原理主要掌握下面几个概念:
1)数据 算法=程序
2)结构化编程,自顶向下(top-down)设计
3)程序单元设计
1.计算机语言两个概念
计算机语言要处理两个概念:数据和算法。
数据 算法 = 程序
数据:是程序使用和处理的信息;
算法:是程序使用的方法;
2.结构化编程
C语言采用了结构化编程, 它采用子程序、程式码区块(英语:block structures)、 for循环 以及while循环等结构,来取代传统的 goto。希望借此来改善计算机程序的明晰性、品质以及开发时间,并且避免写出面条式代码。
结构化程序设计提出的原则可以归纳为32个字:自顶向下(top-down),逐步细化;清晰第一,效率第二;书写规范,缩进格式;基本结构,组合而成。
底层的结构化程序设计
结构化的程序是以一些简单、有层次的程序流程架构所组成,可分为顺序(sequence)、选择(selection)及循环(repetition)。
● 顺序是指程序正常的执行方式,执行完一个指令后,执行后面的指令。
● 选择结构顾名思义,当程序到了一定的处理过程时,遇到了很多分支,无法按直线走下去,它需要根据某一特定选择结构表示程序的处理步骤出现了分支,它需要根据某一特定的条件选择其中的一个分支执行,选择结构有单选择、双选择和多选择三种形式。
● 不断的重复,被称作循环,所以这里的循环结构通常就是用来表示反复执行一个程序或某些操作的过程,直到某条件为假(或为真)时才可终止循环。在循环结构中最主要的是:什么时候可以执行循环?出现哪些操作需要循环执行?循环结构的基本形式有两种。当型循环和直到型循环。
● 重用测试过代码,如果重用别的程序中的部分越多,您自身的工作也越简单。在面向对象中,重用的过程更为容易一些,因为代码本身的可复用性更高。如果项目的任务不重,程序员之间的协作也更容易。
3.程序单元
程序单元是指在程序中执行某一特定任务的具有一定独立性的代码模块
C语言鼓励程序员开发程序单元(函数)来表示各个任务模块。
C语言工作原理一个程序,从C语言源码,到系统可执行的文件,一般经历以下四个过程
1、预处理阶断,这个阶断是文本处理阶断,由预处理器来完成,会将源码中的带"#"开头的预处理命令进行相应的处理,在Linux上C语言的预处理器程序是cp命令。
2、编译阶断,这个阶断是C语言编译阶断,在Linux上C语言的编译器是cc命令,它将C语言源码转换成汇编指令。
3、汇编阶断,这个阶断是汇编编译阶断,在Linux上C语言的汇编器是as命令,这个阶断会将汇编指令编译成二进制机器码。
4、链接阶断,这个阶断是会将汇编阶断生成的机器码目标文件,装载成一个系统可执行的文件,在Linux平台以ELF格式进行组装,在Windows平台上以PE格式进行组装。在Linux平台上的链接器命令为ld,在windows平台上的链接器命令为linker。