C01-C语言概述
如果有人说:“我想要一种语言,只需要对它说我要干什么就行”,给他一支棒棒糖就好了。
1. C语言简述
1.1 起源
C语言
是贝尔实验室的Ken Thompson、Dennis Ritchie等人开发的UNIX操作系统
的“副产品”,初始目的是用于 UNIX
的开发。
UNIX系统
最初也是用汇编语言
编写的。但用汇编语言编写的程序往往难以调试和改进。Thompson意识到需要用一种更加高级的编程语言来完成UNIX系统未来的开发,于是他设计了一种小型的B语言
。Thompson的B语言是在BCPL语言
(20世纪60年代中期产生的一种系统编程语言)的基础上开发的,而BCPL语言又可以追溯到最早(且影响最深远)的语言之一——Algol60语言
。
Algo160语言
--> BCPL语言
--> B语言
--> C语言
通过这个链接可以查看当前世界上常用的编程语言
1.2 标准化
C语言标准有 C89
、C99
、C11
、C17
、C2x
...
其中,C99 标准(2011 年)是一个分界线。
C89
在1989年
被正式采用(American National Standard X3.159-1989),故称为 C89
,也称为 ANSI C。
该标准随后被 ISO 采纳,成为国际标准ISO/IEC 9899:1990
C89 的主要改动:
- 定义了 C 标准库
- 新的预处理命令和特性
- 函数原型(prototype)
- 新关键字:const、volatile、signed
- 宽字符、宽字符串和多字节字符
- 转化规则、声明(declaration)、类型检查的改变
C95
在1995年
对C89
的一个修订和扩充,称为C89 with Amendment 1
或C95
,严格说来并不是一个真正的标准。
C95 的主要改动:
- 3个新标准头文件:iso646.h、wctype.h、wchar.h;
- 一些新的标记(token)和宏(macro);
- 一些新的 printf/scanf 系列函数的格式符;
- 增加了大量的宽字符和多字节字符函数、常数和类型。
C99(重要)
1999年
,在做了一些必要的修正和完善后,ISO 发布了新的 C 语言标准,命名为 ISO/IEC 9899:1999
,简称C99
。
C99 的主要改动:
- 复数(complex);
- 整数(integer)类型扩展;
- 变长数组;
- Boolean 类型;
- 非英语字符集的更好支持;
- 浮点类型的更好支持;
- 提供全部类型的数学函数;
- C++ 风格注释(
//
)。
C11
从2007年开始到2011年,C语言标准委员会重新修订C语言标准,并在2011年
正式发布了ISO/IEC 9899:2011
,简称为 C11 标准
。
C11 标准新引入的特征不多,但是这些也都十分有用,比如:字节对齐说明符、泛型机制(generic selection)、对多线程的支持、静态断言、原子操作以及对 Unicode 的支持。
C17
C17
(也被称为为 C18)是于2018年
6月发布的ISO/IEC 9899:2018
的非正式名称,也是目前(截止到2020年6月)为止最新的 C语言编程标准,被用来替代 C11 标准。
C17 没有引入新的语言特性,只对 C11 进行了补充和修正
。
C2x
下一个版本的 C 标准,预计将于2022年
12月1日完成。
有许多人提出想为 C 语言添加面向对象的特性,包括增加类、继承、多态等已被 C++ 语言所广泛使用的语法特性,但是最终被委员会驳回了。因为这些复杂的语法特性并不符合 C 语言的设计理念以及设计哲学,况且 C++ 已经有了这些特性,C 语言无需再对它们进行支持。
1.3 基于C的语言
C语言对现代变成语言有着巨大的影响,许多现代变成语言都借鉴了大量的C语言特性
,在众多基于C的语言
中,以下几种非常具有代表性。
C++
:包括了所有C语言
特性,但增加了Java
:基于C++
的,所以也继承了C的许多特性。C#
:是由C++
和Java
发展起来的一种较新的语言。Perl
:最初是一种非常简单的脚本语言,在发展过程中采用了C的许多特性
。
2. C语言的优缺点
每一种编程语言都有各自的优缺点,这些优缺点都源于该语言的最初用途
(编写操作系统和其他系统软件)和语言自身的基础理论体系
。
C 语言是除汇编语言
外最接近底层
的语言,语言越接近底层
,使用这种语言编写出来的程序运行速度
越快,但语言接近底层就需要编写更多的代码来细致地命令系统去做你要做的事情,开发周期也更长。
C语言优点:高效
、可移植
、功能强大
、灵活
、标准库
、与UNIX系统的集成
C语言的缺点:更容易隐藏错误、编写出来的代码可能会难以理解、代码程序可能难以修改
3. 编码环境配置
- 系统:Arch Linux 6.10.10-arch1-1
- IDE:Visual Code
- GCC:gcc (GCC) 14.2.1 20240910
这个是后面回来补上的笔记。在 Linux 上配置 Visual Code 的代码环境
- 安装 Visual Code
- 安装工作可以参考 Visual Code 的使用指南,快速到达文章 [[VisualStudio使用指南]]
- 安装 gcc
- Visual Code 上并不能直接编译 C 文件,所以需要安装一个编译器,部分 Linux 系统会默认安装 gcc,使用
gcc --version
查看是否已经安装 - 若没有安装,可以使用指令
yay -S gcc
进行安装 - 与 Linux 上的 gcc 相对应的,是 Windows 上的 MinGW
在编写一段代码并保存后,点击软件右上角的运行图标来执行程序
3.1 C语言插件
在 Linux 版本的 Visual Code 中并没有 C/C++
这个插件,所以 emmm 不管,安装了 gcc 之后在 Visual Code 上直接用就行
1. C/C++ Project Generator
这个是项目创建插件,当创建 C/C++ 项目的时候可以调用这个插件。
安装后,使用Ctrl+Shift+p
快捷键调出命令面板,在输入栏中输入“Create C project” 或者 “Create C++ project” 创建一个 C/C++ 项目
项目结构:
- .vscode:包含
luanch.json
和tasks.json
文件。luanch.json
文件是 VsCode 用于调试的配置文件,当运行程序时,可以选择让 Vscode 先创建出来;tasks.json
文件主要用于定义各种任务,包括构建项目、运行测试、部署应用等 - include:制定包含文件所在的目录路径,文件头中使用
include
引用的库内容,部分外部库会放在lib
文件夹中 - lib:存放项目所依赖的外部库文件
- output:项目编译过程中的中间文件和最终文件存放位置
- src:存放用户编写的源代码
- makefile:该文件保存了编译器和连接器的参数选项,表述了该项目中所有源代码文件之间的关系,对多文件编译尤为重要
关于 项目中配置文件的各项配置文件中的详细解析会在后续需要创建项目时加上,目前可以将目光先放在单文件的编译运行及 C 语言的基本知识
2. C/C++ Runner