基础C程序的开发和编译

简介: 基础C程序的开发和编译

总纲

  • 使用C语言的7个步骤

    graph LR
    A[定义程序的目标] --> B[设计程序]
    B --> C[编写代码]
    C --> D[编译]
    D --> E[运行程序]
    E --> F[测试和调试程序]
    F --> G[维护和修改程序]

步骤详解

  1. 定义程序的目标

在写代码之前,首先要明确自己的思路,了解要完成任务的目标。

  1. 设计程序

明确程序的实现方案,比如页面展示对应的接口有哪些?预估完成时间、大概使用哪些方法来写代码。

  1. 编写代码

这个没什么好说明的,后面学习。注意要在代码中加上注释,便于后期的维护。

  1. 编译

编译时至由编译器把源代码转换成可执行的程序,可执行代码是用计算机的机器语言表示的代码。这种语言由数字码表示的指组成。不同的计算机使用不同的机器语言方案,C编译器负责把C代码翻译成特定的机器语言。
编译器会检查C语言程序是否有效,如果编译器发现错误会报错。

  1. 运行程序

可以在终端输入编译后的文件名执行,也可以双击文件直接运行。

  1. 测试和调试程序

自己跑一遍程序,排除一些语法上的或者是逻辑的漏洞等,简称找bug。

  1. 维护和修改程序

改bug或者是对代码进行优化升级等。

说明

上面的7个使用步骤其实只是一个大概的流程,在真实的开发中并不一定是按照这个流程进行的,这里只是提供了一个方案。

C语言代码的编译过程

image.png

c程序的组成部分

  • C程序由一个或多个函数组成,必须有main()函数。
  • 无论main()函数放在程序文件的什么位置,都会从main()开始执行。
  • 函数有函数头和函数体组成。
  • 函数头包括函数名、传入该函数的信息类型和函数的返回类型。

image.png

  • 示例格式

    #include <stdio.h>
    int main(void)
    {
        语句
        return 0;
    }

第一个程序

  • 代码:

    # include <stdio.h>
    /* 一个简单的程序 */
    int main(void)  
    {
        int num;  // 定义一个数字变量
        num = 1;  // 为变量num赋值
        printf("i am a simple ");  //使用printf函数打印数据
        printf("computer. \n");
        printf("第 %d 个C语言程序\n", num);
        return 0;
    }
  • 输出

    i am a simple computer. 
    第 1 个C语言程序

代码解释

  • int main(void)中的int表明main()函数应返回一个int(整数)。void表明函数main()不带任何参数。
  • int num;定义一个变量。
  • num = 1;为变量num赋值。
  • 实际参数(实参):函数中实际的参数,如上面的printf("i am a simple "),i am a simple 就是printf的实参。
  • 形式参数(形参):函数中用于存储值的变量。
  • return 0;表示函数main()结束并且返回值0

第二个程序

  • 代码

    # include <stdio.h>
    
    void new_fun(void);  // ANSI/ISO C函数原型
    
    int main(void)
    {
        printf("第二个C程序, 运行上面的new_fun函数\n");
        new_fun();
        printf("运行完毕\n");
        return 0;
    }
    
    void new_fun(void)
    {
        printf("执行new_fun函数\n");
    }
  • 输出

    第二个C程序, 运行上面的new_fun函数
    执行new_fun函数
    运行完毕

代码解释

  • 第一个void new_fun(void);是一个函数原型。既是告知编译器正在使用函数new_fun(),因此函数原型也被称为函数声明。其中的第一个void表示new_fun()函数没有返回值,第二个void表示new_fun()没有参数。
  • 第二个void new_fun(void)以及下面的语句是new_fun()函数的定义。函数new_fun()何时执行取决于在main()函数中的调用位置,和new_fun()函数是否定义在main()函数之前没有关系。

第三个程序

  • 代码

    # include <stdio.h>
    int main(void)
    {
        float weight;
        float value;
        printf("你的体重是多少斤?\n");
        printf("让我们去看看。\n");
        printf("请输入你的体重(公斤):\n");
        scanf("%f", &weight);
        value = 2 * weight;
        printf("你的体重是 %.2f斤\n", value);
        printf("你的体重是 %.2f公斤\n", weight);
        return 0;
    }
  • 输出

    你的体重是多少斤?
    让我们去看看。
    请输入你的体重(公斤):# (这里输入的了75)
    你的体重是 130.00斤
    你的体重是 75.00公斤

代码解释

  • scanf()函数用于读取键盘的输入。
  • %f说明scanf()要读取用户从键盘输入的浮点数。
  • &weight告诉scanf()把输入的值赋给名为weight的变量。
相关文章
|
1月前
|
存储 自然语言处理 编译器
【C语言】编译与链接:深入理解程序构建过程
【C语言】编译与链接:深入理解程序构建过程
|
5月前
|
编译器 C语言
C语言编译详解:GCC分步编译与一次编译多个文件
C语言编译详解:GCC分步编译与一次编译多个文件
483 2
|
6月前
编译期编程
编译期编程
|
自然语言处理 编译器 Go
揭秘Go语言编译黑盒:从源代码到神奇可执行文件的完整过程
揭秘Go语言编译黑盒:从源代码到神奇可执行文件的完整过程
67 0
|
Linux 编译器 C语言
Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程
基于linux的驱动开发学习笔记,本篇是描述了一个字符驱动的基础开发流程,以便做嵌入式开发多年的应用或者系统学习驱动开发。
|
存储 编译器 C语言
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(二)
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(二)
388 0
|
存储 自然语言处理 编译器
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(一)
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(一)
274 0