zoukankan      html  css  js  c++  java
  • 2-C程序结构

    一、代码分析

      打开项目中的main.c文件(C程序的源文件拓展名为.c),可以发现它是第一个C程序中的唯一一个源文件,代码如下:

    1 #include <stdio.h>
    2 #include <stdlib.h>
    3 
    4 /* run this program using the console pauser or add your own getch, system("pause") or input loop */
    5 
    6 int main(int argc, char *argv[]) {
    7     return 0;
    8 }

     

    1.#include <stdio.h>

    • #include 是C语言的预处理指令之一,所谓预处理,就是在编译之前做的处理,预处理指令一般以 # 开头
    • #include 指令后面会跟着一个文件名,预处理器发现 #include 指令后,就会根据文件名去查找文件,并把这个文件的内容包含到当前文件中。被包含文件中的文本将替换源文件中的 #include 指令,就像你把被包含文件中的全部内容拷贝到这个 #include 指令所在的位置一样
    • 如果被包含的文件拓展名为.h,我们称之为"头文件"(Header File),头文件可以用来声明函数("函数"就是面向对象中的"方法"),要想使用这些函数,就必须先用 #include 指令包含函数所在的头文件

    2.main函数

    • 一个C程序中一定会有一个main函数,也只能有一个main函数。main函数是整个C程序的入口。main.c的第3行代码就定义了一个main函数。
    • main函数的返回值为int类型,接收2个参数,其实可以不写参数

    main函数可以简化成这样:

    复制代码
    main()
    {
        // insert code here...
        printf("Hello, World!
    ");
    return 0; }
    复制代码

    这里要注意的是:这里的main函数没有写返回值类型,并不代表函数没有返回值,而是表示返回值类型为int类型,void才代表函数没有返回值

    由于C语言的语法限制不严格,我们还可以进一步简化main函数:

    main()
    {
        // insert code here...
        printf("Hello, World!
    ");
    }

    虽然它要求main函数返回int类型的值,但我们可以不返回

    3.stdio.h

    • stdio.h 是C语言函数库中的一个头文件,里面定义了一些标准输入输出函数。在main.c的第1行代码中,用#include指令包含了stdio.h文件。
    • 这里之所以包含 stdio.h 文件,是因为在第7行中用到了在 stdio.h 内部声明的printf函数,这个函数可以向标准输出设备(比如显示器屏幕)输出数据。

    二、开发和运行C程序的步骤(重要)

    步骤图如下:

    1.编写程序

      C语言源文件的扩展名为".c",源文件以ASCII码形式存储,不能直接被计算机执行,因为计算机只能识别二进制指令,也就是0和1

    2.编译(VC环境下)

    • 把C的源程序翻译成计算机可以识别的二进制形式的目标代码文件,这个过程称为编译,由C的编译器完成
    • 在编译的同时,还对源程序的语法等进行检查。若出现语法错误,则编译失败。如果编译成功则生成目标文件,目标文件名跟源程序文件名一样,扩展名为".obj"。比如,mj.c编译后生成目标文件mj.obj
    • 每个源文件是单独进行编译的,假如一个项目中有多个.c源文件,编译成功会生成多个对应的.obj目标。一般情况下,目标文件之间是有关联的,比如 a.obj 可能会调用 b.obj 中定义的一个函数,因此它们都不能够单独被计算机执行,而且目标文件中并不包含程序运行所需要的库函数等

    3.链接(VC环境下)

    • 将所有有关联的obj目标文件,以及系统提供的C库函数等组合在一起生成可执行文件的过程,称为"链接"
    • 链接生成的可执行文件的文件名跟源程序文件同名,扩展名为".exe",计算机可以直接执行

    三、总结

      说了这么多,总结一下第一个C程序的运行步骤:

    1.在编译前先执行#include指令,拷贝stdio.h的内容到源程序中   .c

    2.编译源程序,生成目标文件 .obj

    3.链接C语言函数库,生成可执行文件   .exe

    4.运行可执行文件,在屏幕上输出"Hello, World!"

      看起来好像挺多步骤的、挺麻烦的,但是当我们点击运行按纽时,编译器会自动按顺序执行上面4个步骤

  • 相关阅读:
    Coursera机器学习week11 单元测试
    关于 TypeReference 的解释
    getModifiers 方法解释。
    instanceof isInstance isAssignableFrom 比较
    elasticsearch 基础 语法总结
    kibana 启动 关闭 和进程查找
    MD5 SHA1 SHA256 SHA512 SHA1WithRSA 的区别
    spring boot 项目 热启动
    java zip 压缩文件
    Packet for query is too large (1660 > 1024). You can change this value on the server by setting the max_allowed_packet' variable.
  • 原文地址:https://www.cnblogs.com/0zcl/p/6032828.html
Copyright © 2011-2022 走看看