- C编程教程
- C - 首页
- C语言基础
- C语言 - 概述
- C语言 - 特性
- C语言 - 历史
- C语言 - 环境搭建
- C语言 - 程序结构
- C语言 - Hello World
- C语言 - 编译过程
- C语言 - 注释
- C语言 - 词法单元
- C语言 - 关键字
- C语言 - 标识符
- C语言 - 用户输入
- C语言 - 基本语法
- C语言 - 数据类型
- C语言 - 变量
- C语言 - 整数提升
- C语言 - 类型转换
- C语言 - 类型强制转换
- C语言 - 布尔值
- C语言中的常量和字面量
- C语言 - 常量
- C语言 - 字面量
- C语言 - 转义序列
- C语言 - 格式说明符
- C语言中的运算符
- C语言 - 运算符
- C语言 - 算术运算符
- C语言 - 关系运算符
- C语言 - 逻辑运算符
- C语言 - 位运算符
- C语言 - 赋值运算符
- C语言 - 一元运算符
- C语言 - 自增和自减运算符
- C语言 - 三元运算符
- C语言 - sizeof运算符
- C语言 - 运算符优先级
- C语言 - 其他运算符
- C语言中的决策机制
- C语言 - 决策机制
- C语言 - if语句
- C语言 - if...else语句
- C语言 - 嵌套if语句
- C语言 - switch语句
- C语言 - 嵌套switch语句
- C语言中的循环
- C语言 - 循环
- C语言 - while循环
- C语言 - for循环
- C语言 - do...while循环
- C语言 - 嵌套循环
- C语言 - 死循环
- C语言 - break语句
- C语言 - continue语句
- C语言 - goto语句
- C语言中的函数
- C语言 - 函数
- C语言 - 主函数
- C语言 - 按值调用函数
- C语言 - 按引用调用函数
- C语言 - 嵌套函数
- C语言 - 可变参数函数
- C语言 - 用户自定义函数
- C语言 - 回调函数
- C语言 - 返回语句
- C语言 - 递归
- C语言中的作用域规则
- C语言 - 作用域规则
- C语言 - 静态变量
- C语言 - 全局变量
- C语言中的数组
- C语言 - 数组
- C语言 - 数组的特性
- C语言 - 多维数组
- C语言 - 将数组传递给函数
- C语言 - 从函数返回数组
- C语言 - 变长数组
- C语言中的指针
- C语言 - 指针
- C语言 - 指针和数组
- C语言 - 指针的应用
- C语言 - 指针运算
- C语言 - 指针数组
- C语言 - 指向指针的指针
- C语言 - 将指针传递给函数
- C语言 - 从函数返回指针
- C语言 - 函数指针
- C语言 - 指向数组的指针
- C语言 - 指向结构体的指针
- C语言 - 指针链
- C语言 - 指针与数组
- C语言 - 字符指针和函数
- C语言 - 空指针
- C语言 - void指针
- C语言 - 野指针
- C语言 - 指针解引用
- C语言 - 近指针、远指针和巨大指针
- C语言 - 指针数组的初始化
- C语言 - 指针与多维数组
- C语言中的字符串
- C语言 - 字符串
- C语言 - 字符串数组
- C语言 - 特殊字符
- C语言结构体和联合体
- C语言 - 结构体
- C语言 - 结构体和函数
- C语言 - 结构体数组
- C语言 - 自引用结构体
- C语言 - 查找表
- C语言 - 点(.)运算符
- C语言 - 枚举(或枚举类型)
- C语言 - 结构体填充和打包
- C语言 - 嵌套结构体
- C语言 - 匿名结构体和联合体
- C语言 - 联合体
- C语言 - 位段
- C语言 - typedef
- C语言中的文件处理
- C语言 - 输入与输出
- C语言 - 文件I/O(文件处理)
- C预处理器
- C语言 - 预处理器
- C语言 - 预处理指令
- C语言 - 预处理器运算符
- C语言 - 宏
- C语言 - 头文件
- C语言中的内存管理
- C语言 - 内存管理
- C语言 - 内存地址
- C语言 - 存储类别
- 其他主题
- C语言 - 错误处理
- C语言 - 可变参数
- C语言 - 命令执行
- C语言 - 数学函数
- C语言 - static关键字
- C语言 - 随机数生成
- C语言 - 命令行参数
- C编程资源
- C语言 - 问答
- C语言 - 快速指南
- C语言 - 速查表
- C语言 - 有用资源
- C语言 - 讨论
C语言历史
C编程 是一种通用的、面向过程的编程语言。它既是机器无关的,又是结构化的。C 是一种高级编程语言,由丹尼斯·里奇 (Dennis Ritchie) 于 20 世纪 70 年代初开发。如今,它是世界上最流行和最有影响力的编程语言之一。
C语言因其简洁性、效率和多功能性而广受欢迎。它具有强大的特性,包括低级内存访问、丰富的运算符集和模块化框架。
除了在计算机编程技术发展方面的重要性之外,C语言的设计也深刻地影响了当今使用的许多其他编程语言。受C语言影响的语言包括Java、PHP、JavaScript、C#、Python等等。这些语言都从C语言借鉴了语法、控制结构和其他基本特性。
C语言由于其可移植性,支持不同的硬件和操作系统。通常,它被认为是一种基础语言,并影响了许多其他计算机语言。它在学术界和工业界得到最广泛的应用。C语言的相关性和广泛接受度使其对未来的程序员至关重要。
C编程语言的历史相当引人入胜,并且在计算机科学和软件工程的发展中起着关键作用。
编程语言按年份发展如下:
C语言历史概述
以下是C语言历史的简要概述:
C编程语言的起源
'ALGOL'是编程语言的基础或先驱。它于1960年首次推出。'ALGOL'在欧洲国家广泛使用。ALGOL向开发者社区引入了结构化编程的概念。1967年,出现了一种名为'BCPL'的新型计算机编程语言,它是Basic Combined Programming Language的缩写。BCPL是由马丁·理查兹(Martin Richards)在20世纪60年代中期设计的。
丹尼斯·里奇(Dennis Ritchie)在20世纪70年代初在贝尔实验室创建了C语言。它发展自肯·汤普森(Ken Thompson)创建的一种较旧的语言B。创建C语言的主要目的是构建Unix操作系统,这对于现代计算机的发展至关重要。BCPL、B和C都稳固地属于传统的程序化家族,其典型代表是Fortran和Algol 60。BCPL、B和C在许多细节上语法不同,但总体上它们是相似的。
C编程语言的发展
1971年,丹尼斯·里奇开始研究C语言,他和贝尔实验室的其他开发人员不断改进它。该语言既适用于系统编程,也适用于应用程序开发,因为它设计得简单、高效且可移植。
C编程语言的标准化
丹尼斯·里奇于1971年开始开发C语言,并与贝尔实验室的其他开发人员合作对其进行了改进。该语言在设计时考虑了可移植性、简洁性和效率,使其适用于应用程序和系统编程。
传统C语言之后的C语言版本历史
K&R C
丹尼斯·里奇和布莱恩·科尼汉(Brian Kernighan)出版了他们的著作《C程序设计语言》的第一版。该书通常被称为K&R(作者的姓名首字母),多年来一直是该语言的非正式规范。它所描述的C语言版本通常被称为“K&R C”。它也被称为C78。
K&R C中引入的许多C语言特性至今仍在2018年才批准的语言版本中保留。在早期的C语言版本中,只有返回类型不是int的函数,如果在函数定义之前使用,才必须声明;未经事先声明的函数被认为返回类型为int。
AT&T和其他厂商的C编译器支持添加到K&R C语言中的几个特性。虽然C语言开始流行,但在实现上缺乏统一性。因此,人们认为必须对语言规范进行标准化。
ANSI C
20世纪80年代,美国国家标准学会(ANSI)开始致力于C语言的正式标准。这导致了ANSI C的开发,该标准于1989年制定。ANSI C引入了几个新特性,并阐明了早期C语言版本中存在的歧义。
C89/C90
ANSI C标准被国际采用,被称为C89(或C90,取决于批准年份)。多年来,它一直是编译器和开发工具的基础。
C99
1999年,国际标准化组织/国际电工委员会(ISO/IEC)批准了C标准的更新版本,称为C99。C标准在20世纪90年代后期进一步修订。
C99引入了新的特性,包括内联函数、几种新的数据类型(例如表示复数的复数类型)和变长数组等。它还增加了对C++风格的单行注释的支持,以//开头。
C11
C11于2011年发布,是C标准的另一个主要修订版。C11标准为C语言及其库添加了新特性,并引入了诸如多线程支持、匿名结构体和联合体以及改进的Unicode支持等特性。
它包括类型通用宏、匿名结构体、改进的Unicode支持、原子操作、多线程和边界检查函数。它与C++的兼容性有所提高。
C17
C17标准已于2018年6月发布。C17是C编程语言的当前标准。此标准修订版没有引入新特性。它只对C11中的缺陷进行了一些技术修正和说明。
C18
C标准的最新版本C18于2018年发布。与C11相比,它包含了一些小的修订和错误修复。
C23
C23是下一个主要C语言标准修订版的非正式名称,预计将于2024年发布。预计此修订版将引入14个新的关键字。
C语言由于其简洁性、效率和多功能性而长期保持流行。它已被用于创建各种各样的软件,包括操作系统、嵌入式系统、应用程序和游戏。C语言的语法和语义也影响了不同的现代编程语言,例如C++、Java和Python。