寒假作业1之问答题
这个作业属于哪个课程 | 2020年面向对象程序设计 |
---|---|
这个作业要求在哪里 | 寒假作业1 |
作业正文 | 问答题 |
其他参考文献 | C语言有什么缺陷、C语言的编译过程 |
问答题 | |
========== | |
1.C语言有什么缺陷 |
- 思考过程:对于c++我不并不了解,所以我回想了这一个学期从刚接触C语言到现在的一些学习经历,以及平时做编程题过程中遇到的一些问题,并查找了一些资料,做了以下总结。
- 总结:
1.C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。
2.C程序有时会难以理解。C语言语法成分相对简单,是一种小型语言。但是,其数据类型多,运算符丰富且结合性多样,使得对其理解有一定的难度。发明C语言时,为了减少字符输入,C语言比较简明,同时也使得C语言可以写出常人几乎无法理解的程序。
3.C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷。
2.C语言的编译过程
1.编译预处理。读取c源程序,对其中的伪指令(以#开头的指令)和特殊符号进行处理。预编译程序所完成的基本上是对源程序的“替代”工作。经过此种替代,生成一个没有宏定义、没有条件编译指令、没有特殊符号的输出文件。这个文件的含义同没有经过预处理的源文件是相同的,但内容有所不同。下一步,此输出文件将作为编译程序的输出而被翻译成为机器指令。
2.编译阶段。经过预编译得到的输出文件中,将只有常量。预编译程序所要作得工作就是通过词法分析和语法分析,在确认所有的指令都符合语法规则之后,将其翻译成等价的中间代码表示或汇编代码。
3.优化阶段。优化一部分是对中间代码的优化。这种优化不依赖于具体的计算机。另一种优化则主要针对目标代码的生成而进行的。
4.汇编过程。汇编过程实际上指把汇编语言代码翻译成目标机器指令的过程。
5.链接程序。链接程序的主要工作就是将有关的目标文件彼此相连接,也即将在一个文件中引用的符号同该符号在另外一个文件中的定义连接起来,使得所有的这些目标文件成为一个能够让操作系统装入执行的统一整体。