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文件中的函数实现,最终生成一个可执行文件。

posted @ 2020-01-23 23:13  jasf  阅读(233)  评论(0编辑  收藏  举报