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

这个作业属于哪个课程 2020面向对象程序设计-张栋班
这个作业要求在哪里 寒假作业1
这个作业的目标 <写上具体方面>
作业正文 1-问答题
其他参考文献 C语言的编译原理及过程

问答题

1. 不了解C++, 我认为C语言有以下缺陷:
  • 数组越界问题:数组下标从零开始,数组元素的位置和下标没有严格对应,可能会造成数组越界。当需要对数组元素进行1-n编号时,往往需要对第一个元素下标进行处理。
  • 字符串的输入与缓冲区问题:不同的输入函数在读取字符串时,对换行符的处理方式不同。例如:
    • scanf()函数不会读取 stdin(标准输入缓存区)中的换行符
    • gets()函数在 stdin 中读取,读到换行符停下,舍弃换行符(在PTA平台上,gets()被认为是一个不安全的函数)
    • getchar()函数在 stdin 逐个读取,前提是缓冲区没有其他数据(需要处理读取对象前的干扰数据)
  • 运算溢出问题:整型运算中,中间数据超出整型范围就会溢出,这是初学者容易忽略的错误。
2. C语言的编译过程:
  • 预处理:根据已放置在文件中的预处理指令来修改源文件的内容(由.c文件到.i文件)
  • 编译:对经过预处理之后的程序进行一系列的词法分析、语法分析、语义分析及优化后,生成相应的汇编代码(由.i文件到.s文件)
  • 汇编:将汇编代码转换为机器码(由.s文件到.o文件)
  • 链接:将所需的库文件与汇编生成的目标文件合并生成最终的可执行文件(由.o文件到可执行文件)

猜你喜欢

转载自www.cnblogs.com/dump16/p/12236299.html