基础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月前
|
编译器 Linux C语言
Linux嵌入式系统之交叉编译中编译器与解释器的区别
Linux嵌入式系统之交叉编译中编译器与解释器的区别
13 0
|
1月前
|
编译器 Linux C++
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(下)
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(下)
|
1月前
|
编译器 C语言 C++
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-1
【C进阶】C程序是怎么运作的呢?-- 程序环境和预处理(上)-1
|
3月前
编译期编程
编译期编程
|
6月前
|
自然语言处理 编译器 Go
揭秘Go语言编译黑盒:从源代码到神奇可执行文件的完整过程
揭秘Go语言编译黑盒:从源代码到神奇可执行文件的完整过程
35 0
|
11月前
|
Linux 编译器 C语言
Linux驱动开发笔记(一):helloworld驱动源码编写、makefile编写以及驱动编译基本流程
基于linux的驱动开发学习笔记,本篇是描述了一个字符驱动的基础开发流程,以便做嵌入式开发多年的应用或者系统学习驱动开发。
|
程序员 编译器 Linux
G0 语言编译运行说明 | 学习笔记
快速学习 G0 语言编译运行说明
87 0
|
存储 自然语言处理 编译器
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(一)
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(一)
228 0
|
存储 编译器 C语言
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(二)
【嵌入式开发】gcc 学习笔记(一) - 编译C程序 及 编译过程(二)
345 0
|
编解码 Linux C语言
C语言编译流程
1编译流程图示 2编译各阶段命令 2-1预处理阶段 2-2 编译阶段 2-3 汇编阶段 2-4 链接阶段 3例子 1、编译流程图示 我们在Linux环境下编译单个C文件时,最简单的方法是输入一条命令gcc hello.c就可以生成默认的可执行文件a.out,展开该命令可以看到实际流程如下。
1132 0