寒假作业1 问答题

一、问答题:
回答以下问题:

  • 如果你不了解C++请回答以下问题:你认为C语言有什么缺陷(你觉得哪里用的不顺手)。
    如果你已经了解C++请回答以下问题:你觉得C++和C语言比有什么优点。
  • 查阅相关资料,简述一下C语言/C++的编译过程。

    c语言不顺手的地方。

    • 对变量赋值的格式对应,要求不严格。

      在c语言中,我要是把一个浮点型数据赋给一个整型变量,在编译的时候只会给出警告,告诉你会丢失精度,但是是可以运行的,那这样子就导致在运行后发现有错,但是很难发现哪里出现错误,这也就让后期找错修改代码要花费很多不必要的时间。(深受其害o(╥﹏╥)o)
    • 数组下标越界不检查

      C语言在数组下标越界的时候是不会提示错误的,这导致经常自己犯了数组越界的错误而不自知,只看到最后的运行结果是错误的,最后常常要经过好几次调试才能发现越界的错误。
    • switch语句

      C语言的switch语句由case组成,每个case结束以后都要用一个break来跳出case,否则会继续执行下面的case。这样的设定可有好有坏,好处就是可以让多种情况执行相同的操作,不大好的地方就是,如果要在需要跳出case的地方忘了break,那就会出错,并且后期检查不易看到。

      思考过程:

    • 去翻了翻之前在做c语言作业的过程中遇到问题时向别人提问的内容.
    • 回忆了一下之前卡了很久的题卡在了哪里.

      C语言/C++的编译过程

    • 预处理: 展开头文件/宏替换/去掉注释/条件编译 (test.i main .i)
    • 编译:检查语法,生成汇编 ( test.s main .s)
    • 汇编: 汇编代码转换机器码 (test.o main.o)
    • 链接:链接到一起生成可执行程序 a.out
      在看这篇文章的预处理部分时发现了很多关于宏的内容,于是乎查了一下宏.
    • :所谓宏是指电脑运用过程中用于简化操作的一系列系统代码,在一定程度上可以使一系列复杂的命令或任务自动执行。
    • 链接:
      静态链接:静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。
      动态链接:简单地讲,就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。也就是说,把链接这个过程推迟到了运行时再进行,这就是动态链接(Dynamic Linking)的基本思想。可以动态链接的库,在Windows上是dynamic link library (DLL)。

猜你喜欢

转载自www.cnblogs.com/2002ljy/p/12232178.html