2020年面向对象程序设计寒假作业1问答题

问答题
1.如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。
(1)C程序的错误隐蔽。C语言有一些隐患,需要程序员重视,比如将比较的"=="写成赋值"=",语法上没有错误,这样的逻辑错误不易发现,要找出来往往十分费时。
(2)输入输出语句相对复杂。
(3)对于字符串的处理只能通过字符数组进行。
(4)经常要考虑数组越界问题。
(5)运算符和优先级较多,不便于记忆。C语言具有多种运算符,如果运用熟练,能充分体现C语言表达灵活和效率高等特点,但这也增加了使用难度,多样的运算符和优先级可能会混浠造成错误。
2.查阅相关资料,简述一下C语言/C++的编译过程。
https://zhuanlan.zhihu.com/p/26023501
C语言生成可执行文件大体经过四个步骤:预处理,编译,汇编,链接

(1) 预处理
预编译又称预处理,主要对源文件进行一些文本处理,处理的对象是以#开头的语句,包括#include(文件包含)#define(宏定义)和条件编译(#ifdef #ifndef #if #undef),具体的说,将被include文件中的内容复制到源文件中,然后将所有宏进行替代。
(2)编译
编译主要是将源文件.C文件生成汇编代码文件.s文件。编译的主要工作是进行语法检查,查看是否有语法错误。特别注意一点,对于一些非本源文件中的外部函数(非本源文件中定义的函数),外部变量(非本源文件中定义的变量),编译不会去追究其定义及实现。

(3) 汇编
汇编是将汇编代码生成机器码,也就是二进制文件,这个文件也叫做目标文件,即.obj或者.o文件,汇编是机械转换的过程。

(4) 链接
链接是将生成的一个或者多个中间文件联合生成可执行文件。所有的可执行文件都需要一个入口函数,在c语言里面入口函数是main函数,每个源文件都可能调用到其他源文件中的函数,所以生成的.o目标文件要进行链接,链接其他.o文件中的函数实现,最终生成一个可执行文件。

猜你喜欢

转载自www.cnblogs.com/jasf/p/12231654.html