C语言

C语言的缺点

  • 记忆困难
    由于运算符和运算优先级过多(比如什么单目运算符一直都搞不清楚只能在每次可能用到时去百度),不便于记忆,语法定义不严格,编程自由度大,对于像我这种初次接触编程的freshman确实是有些困难,有时候代码太长,自己总是看不懂我是不会承认我比较笨的
  • 查错困难
    比如写一段程序,里面用到了数组,可是如果你自己数组范围设太小,在编译的时候,又不会提醒你数组越界....,可是当你要去debug的时候就要一直调试,当你的测试数据比较大的时候,反正就是有点烦很难找出错误。
  • 输入的&
    C语言的输入比不可少的&,当初刚接触C语言的时候就常常会忘了&,然后每次就....可是c++它用的是cin>>a>>b(不需要用&),这对于新手应该会减少出错的次数吧。

C语言的编译过程

1、预处理

预处理语句以"#"开头,每个预处理命令必须单独占一行,语句末尾不使用分号作为结束符
由.c文件到.i文件:当前我会的也只是文件包含,即#include <包含文件名>,它的功能是在源程序进行编译之前,用包含文件的内容取代该文件的预处理语句,详细可以参考C语言编译预处理

2、编译

由.i文件到.s文件:检查所写代码的语法,将经过预处理的程序转换成特定的汇编代码

3、汇编

由.s文件到.o文件:汇编代码转换机器码

4、链接

由.o文件到可执行文件:将源文件中用到的库函数与汇编生成的目标文件.o合并生成可执行文件

静态链接是由链接器在链接时将库的内容加入到可执行程序中的做法。链接器是一个独立程序,将一个或多个库或目标文件(先前由编译器或汇编器生成)链接到一块生成可执行程序。
动态链接需要解决空间浪费和更新困难这两个问题最简单的办法就是把程序的模块相互划分开来,形成独立的文件,而不再将他们静态的链接在一起。简单地讲,就是不对那些组成程序的目标文件进行链接,等到程序要运行时才进行链接。也就是说,把链接这个过程推迟到了运行时再进行,这就是动态链接的基本思想。

posted on 2020-01-25 19:58  clt1120  阅读(113)  评论(0编辑  收藏  举报