C语言概述
什么是程序
计算机语言简史
第一代:机器语言
1946年2月14日,世界上第一台计算机ENIAC诞生,使用的是最原始的穿孔卡片。这种卡片上使用的是用二进制代码表示的语言,与人类语言差别极大,这种语言就称为机器语言。比如一段典型的机器码:
Ø 1. 0000,0000,000000010000 代表 LOAD A, 16
Ø 2. 0000,0001,000000000001 代表 LOAD B, 1
Ø 3. 0001,0001,000000010000 代表 STORE B, 16
下图是第一代程序员女性程序员Ada正在使用机器语言编程:
第二代:汇编语言
使用英文缩写的助记符来表示基本的操作,这些助记符构成了汇编语言的基础,比如:LOAD、MOVE等,使人更容易使用,因此,汇编语言也称为符号语言。
优点:能编写高效率的程序。
缺点:汇编语言是面向机器的,不同计算机会有不同的汇编语言,程序不易移植。
目前仍然应用于工业电子编程领域、软件的加密解密、计算机病毒分析等。
第三代:高级语言
高级语言,是一种接近于人类使用习惯的程序设计语言,它允许程序员使用接近日常英语的指令来编写程序,程序中的符号和算式也与日常用的数学算式差不多,接近于自然语言和数学语言,容易为人们掌握。
高级语言独立于计算机硬件,有一定的通用性;计算机不能直接识别和执行用高级语言编写的程序,需要使用编译器或者解释器,转换为机器语言才能被识别和执行。
常见的高级语言有Fortran、ALGOL、Basic、COBOL、LISP、Pascal、PROLOG、C、C++、VB、Delphi、Java、PHP、JavaScript、Python等。
为什么学习C语言
C 语言是最流行的编程语言之一,下图是2023年编程语言排名,排名网站网址为:https://www.tiobe.com/tiobe-index/。
C语言的发展历程
C语言的发行版本
(1)K&R C(1978年):由柯尼汉和里奇合写的《C 程序设计语言》成为公认标准,简称为K&R C。
(2)ANSI C(C89/C90,1989年):第一个ISO标准,也叫ANSI C,规范了K&R C,确保了可移植性。
(3)C99(1999年):第一次大修订,引入许多特性如//注释、可变长度数组等,成为最流行版本。
(4)C11(2011年):再次修订,增加_Generic、static_assert等功能,跟进新技术。
(5)C17(2018年):C11在2017年修补,2018年发布的C17只解决了C11的缺陷,未加入新功能。
(6)C23(预计2023年): 2023年发布的C23计划增强安全性、消除实现定义行为、引入模块化语言等,提升安全和可靠性。
C语言的应用场景
C程序开发快速入门
开发工具选择
1)Visual Studio 工具
Visual Studio(简称 VS)是由微软公司发布的集成开发环境,它包括了整个软件生命周期中所需要的大部分工具,如UML工具、代码管控工具、集成开发环境(IDE)等。
官网地址:https://visualstudio.microsoft.com
1)Code::Block工具
Code::Block是一个免费的跨平台IDE,它支持C、C++和Fortan程序的开发,Code::Block的最大特点是它支持通过插件的方式对IDE自身功能进行扩展,这使得Code::Block具有很强的灵活性,方便用户使用。
官网地址:https://www.codeblocks.org
2)Clion工具
CLion是一款由JetBrains推出的跨平台C/C++集成开发环境(IDE),它具有智能编辑器、CMake构建支持、调试器、单元测试、代码分析等功能,可以极大提高C/C++开发效率。
官网地址:https://www.jetbrains.com/clion
3)VS Code
Visual Studio Code(简称VS Code)是一款由Microsoft开发的免费、开源的代码编辑器,它是一种轻量级但功能强大的集成开发环境(IDE),VS Code旨在提供一种优秀的编码体验,适用于各种编程语言和应用程序开发任务。
官网地址:https://code.visualstudio.com
VS Code 用户界面友好、上手快、安装简单,插件丰富,所以本教程选择 VS Code 作为默认的开发工具。
4)在线编辑工具
CodingGround: https://tutorialspoint.com/compile_c_online.php
OnlineGDB:https://onlinegdb.com/online_c_compiler
Lightly:https://cde2f3ce.lightly.teamcode.com/
开发工具安装
安装 MinGW-w64
1)MinGW-w64 介绍
VS用于编辑C 代码,我们还需要 C 编译器来运行 C 代码,所以安装VS Code之前我们需要先安装 C 编译器。这里我们使用 MinGW-w64(Minimalist GNU for Windows 64-bit)。
MinGW-w64 是一个用于Windows操作系统的开发工具集,其包含了C语言编译器 GCC(GNU Compiler Collection)。
官网地址:https://www.mingw-w64.org
在资料文件夹中,有文件“mingw64.zip”,即是 MinGW-w64 的安装包,我们安装的 MinGW 版本是11.0,对应的GCC版本为13.2.0。
1)解压 MinGW
将资料文件夹中的“mingw64.zip”移动至 C 盘,使用解压工具进行解压(本教程中使用的是7zip),理论上你可以移动到任何地方解压,但注意路径中不能包含中文。
2)将MinGW添加至环境变量
(1)进入mingw64文件夹下的bin文件夹,复制当前路径。
(2)在最底部的任务栏搜索框中搜索“高级系统设置”
注意,如果在最底部的任务栏中没有看到搜索框,请点击“windows”键。
如果是windows 10 系统,请在弹出开始菜单之后直接打字,搜索框会自动出现。
如果是 windows 11 系统,搜索框会在开始菜单顶部。
(1)进入高级系统设置之后,点击“环境变量”按钮。
(2)双击“Path”。
(3)点击“新建”,粘贴前面复制的 MinGW 路径地址,连按三个“确定”(包括前面打开的两个窗口,也需要点击“确定”)。
1.1.1 安装 VS Code
1)安装
(1)双击安装包,开始安装。
(2)选择安装位置。
(3)选择开始菜单文件夹,这里我们采用默认选项,直接点下一步。
(4)选择附加任务,本步骤中的选项我们全部勾选。
(5)点击安装
(6)完成安装,勾选“VS Code 自动启动”。
2)选择颜色主题风格
VS Code 首次启动会打开欢迎页面,我们可以在欢迎页面中选择颜色主题风格,默认是深色模式,我在这里选择浅色模式,后续也可以从设置中再次修改主题风格。
1.1.2 配置 VS Code
1)安装中文语言包
安装中文语言包扩展,Chinese(Simplified)(简体中文)Language Pack for Visual Studio Code,点击扩展按钮,从搜索框搜索“chinese”,第一个就是我们要安装的扩展。
扩展安装完成后需要重启VS Code,正常情况下会弹出重启按钮,点击即可重启,如果没有弹出,可自行重启VS Code。
2)安装 C 语言扩展
点击最左侧“扩展”按钮,搜索“C/C++”,选择“C/C++ Extension Pack”,它是 VS Code 官方推荐的工具包,包含了开发 C/C++ 所需要的多个扩展。
1.1 年轻人的第一个 C 程序
1.1.1 需求说明
要求开发一个程序,输出"hello,world!"。
1.1.2 开发步骤
(1)创建一个新文件夹,注意文件夹名字中不能有中文,所在的路径中也不允许有中文,如下图:
(2)打开 VS Code,单击顶部菜单中的“文件”,在下拉菜单中点击“打开文件夹”,找到上一步创建的文件夹。
(3)首次打开文件夹,需要点击“是,我信任此作者”,如下图。
(1)新建文件 main.c,如下图:
(2)将下面的代码写入main.c 中。
#include <stdio.h>
int main()
{
printf("Hello World");
return 0;
}
(3)运行代码,如下图:
1.1.3 程序代码分析
1.2 C程序运行机制流程
(1)编写
编写C语言源程序代码,并以文件的形式存储到磁盘中,源代码文件以“.c”作为扩展名,如本项目中main.c 文件。
(2)预处理
在编译之前,预处理器会处理源代码文件,主要进行一些文本上的处理,包括去掉多余的空格和注释,处理预处理指令(后面会学到),生成经过处理的源代码文件,通常带有.i扩展名。
(3)编译
编译器接受预处理后的源代码文件,并将其翻译成汇编代码,生成汇编文件,通常带有.s或.asm扩展名。
(4)汇编
汇编器将汇编代码翻译成机器码并生成一个或多个目标文件,目标文件是二进制文件,通常带有.o(在Unix-like系统上)或.obj(在Windows上)
(5)链接
链接器将多个目标文件(如果有的话)合并在一起,包括C标准库文件和其他库文件,生成最终的可执行的二进制程序(.exe 程序)。
库文件是由系统提供,里面包括内置的标准函数和数据结构集合等,我们代码中使用的<stdio.h> 就是标准库提供的,里面定义 printf 这个函数。
(6)运行
执行该.exe文件得到程序的运行结果。
1.3 C程序开发注意事项
(1)C程序源文件以"c"为扩展名。
(2)C程序的执行入口是main() 函数。
(3)C语言严格区分大小写。
C程序由一条条语句构成,每个语句以 ";" 结束。