剖析c语言程序结构,深度剖析C语言知识体系 原理+实践,一课带你吃透C语言

download:深度剖析C语言知识体系 原理+实践,一课带你吃透C语言

修炼内功最强语言,训练编程思想最有效语言,圣经般存在的语言,2020 TIOBE排行冠军语言——这些说的,都是C语言。每个优秀开发者都应该精通C语言,这门课程就是为所有没学过、没学好C语言的你专属打造,多种编程语言技术专家bennyhuo独家分享,带你系统、高效、轻松啃透C语言这个硬骨头!

适合人群

希望获得更深层次进阶语言的开发者

希望夯实语言基础的开发者

希望精雕细琢掌握多门语言的开发者

有面试/跳槽/晋升需求的开发者和在校生

技术储备要求

零门槛,有计算机基础、操作系统、编程基础和经验更佳

发展历程

编辑

C语言的原型ALGOL 60语言(也称为A语言) 。

1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。

1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。

1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。

而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。

1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。

1987年,随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。C语言的主要特点,即经典的87 ANSIC。C语言发展迅速,而且成为最受欢迎的语言之一,主要因为它具有强大的功能。许多著名的系统软件,如DBASE III PLUS、DBASE IV 都是由C语言编写的。用C语言加上一些汇编语言子程序,就更能显示C语言的优势了。

1990年,国际化标准组织ISO(Intrernational StandardOrganization)接受了87 ANSI C为ISO C的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。目前流行的C语言编译系统大多是以ANSI C为基础进行开发的,但不同版本的C编译系统所实现的语言功能和语法规则略有差别。

特点

编辑

C 语言普适性最强的一种计算机程序编辑语言,它不仅可以发挥出高级编程语言的功用,还具有汇编语言的优点,因此相对于其它编程语言,它具有自己独特的特点。具体体现在以下三个方面:

其一,广泛性。C 语言的运算范围的大小直接决定了其优劣性。C 语言中包含了 34 种运算符,因此运算范围要超出许多其它语言,此外其运算结果的表达形式也十分丰富。此外,C 语言包含了字符型、指针型等多种数据结构形式,因此,更为庞大的数据结构运算它也可以应付。

其二,简洁性。9 类控制语句和 32个KEYWORDS是C语言所具有的基础特性,使得其在计算机应用程序编写中具有广泛的适用性,不仅可以使用广大编程人员的操作,提高其工作效率,同 时还能够支持高级编程,避免了语言切换的繁琐。

其三,结构完善。C 语言是一种结构化语言,它可以通过组建模块单位的形式实现模块化的应用程序,在系统描述方面具有显著优势,同时这一特性也使得它能够适应多种不同的编程要求,且执行效率高。 [2]

优点

1、简洁紧凑、灵活方便

C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。

2、运算符丰富

C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。

3、数据类型丰富

C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。

4、是结构式语言

结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。

5、语法限制不太严格,程序设计自由度大

虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。

6、允许直接访问物理地址,对硬件进行操作

由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。

7、生成目标代码质量高,程序执行效率高

一般只比汇编程序生成的目标代码效率低10%~20%。

8、适用范围大,可移植性好

C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX、windows 98.windows NT;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。 [3]

缺点

1.C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。

2.C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。

常用编译器

编辑

有Microsoft Visual C++,Borland C++,WatcomC++ ,Borland C++ ,Borland C++ Builder,Borland C++ 3.1 for DOS,WatcomC++ 11.0 for DOS,GNU DJGPP C++ ,Lccwin32 C Compiler 3.1,Microsoft C,High C,Turbo C,Dev-C++,C-Free,win-tc 等等......

C语言的结构化设计

编辑

C语言每个阶段的处理都比较容易使人理解。它采用自顶向下, 逐步细化,模块化设计,结构化编码的方法来保证完成程序。

自顶向下逐步细化

通过自顶向下逐步细化可以使C语言代码的出错率降低,更能提高C语言程序的执行效率,它能使一个具体的问题抽象化再加以注释方便人们的理解。 [1]

模块化设计

它把一个复杂的问题进行了模块化,使每个模块的功能更简洁,更单一,模块在语言中可通过函数实现。 例如贪吃蛇游戏的设计可分为六个模块。游戏开始时,固定蛇身的长度,其位置任意。

(1) 蛇头撞到自身和周围边框时游戏结束,重新开始时撞到食物蛇身长度增加一个单位。

(2) 吃到一定长度或时间停止为通关。

(3) 可以通过设置蛇的运动速度加快游戏的进度。

(4) 可以使用外部设备如键盘及手柄控制蛇的运动方向如果不控 制蛇则按当前方向运动。

(5) 设置显示游戏的级别及分数。

这些模块可以通过C语言程序设计中的函数及代码完成。 [1]

结构化编码

设计好结构化算法之后,还要进行结构化编码,将其用设计好的算法用具体的程序设计语言来表示,得到结构化程序。 [1]

C语言程序设计中遇到的障碍

编辑

C语言的应用范围很广,也很方便,能够适应大多数的程序设计,也为学习者学习其他软件提供了很大的帮助作用,但是在具体应用过程中还是出现了很多问题。

时间中断

计算机控制系统是一个精密的控制系统,尤其注重时效性,必须要在规定时间之内完成多项规定任务,这就对计时有了很严格的要求。所以传统的时钟法难以满足需要,在C语言程序设计过程中我们一般都用ICH进行计时,准确而且能适应编程过程中的各种突发状况。在实际操作过程中,计算机控制系统很有可能会出现信号中断的现象,或者由于工作人员失误指令可能会出现错误,一旦操作失误或者出现各种突发情况都有可能会导致计算机的死机,影响整个程序设计的进程。在这个时候,C语言就可以很好地应对和解决,可以通过仿真对计算机进行浮点运算处理,通俗意思也就是说时间中断会受到图形、浮点运算的影响,而且一定程度上会受到很大的限制。 [4]

汉字显示及数组输入

计算机控制系统在一定程度上对C语言程序设计有辅助作用,一般都是通过构建函数的形式来辅助C语言完成汉字处理的,但是并不能完全实现自动化,还是需要我们自己 来设置起始点、颜色、汉字库以及背景色等基本内容,有了这些,函数才能成功将数据进行转换,也才能对字符进行汉字识别。但是函数毕竟是一个固定的公式或者程序,不可能对所有字符串都能进行转换和识别,如果语言比较复杂或者表达不直接就很难识别出来,另一方面,程序的固定内存本身也是有限的,一旦字符串比较大就难以存储,也给C语言程序设计带来了很多问题。 [4]

混合编程

在计算机控制系统的运行过程中,很多时候后台可利用的时间是有限的要受到控制的,所以程序员经常会用C语言来进行混合编程,这样能够很好的缩短设计时间,也能更好地提高工作效率。但是,一旦涉及到混合编程,问题就比较复杂,需要程序员设计出更多、更复杂、更能适应程序设计的函数模型,这对程序员的 工作无疑增加了很大的难度。

你可能感兴趣的:(剖析c语言程序结构)