C语言是一门面向过程的计算机编程语言,与C++、C#、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速、工作量小、可读性好、易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%-20%。因此,C语言可以编写系统软件。 [2]
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。 [3]
C语言拥有经过了漫长发展历史的完整的理论体系,在编程语言中具有举足轻重的地位。 [4]
发展历史
播报
编辑
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。 [5]
C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
20世纪60年代,美国AT&T公司贝尔实验室(AT&T Bell Laboratories)的研究员肯·汤普森(Kenneth Lane Thompson)闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——Space Travel。他背着老板,找到了台空闲的小型计算机——PDP-7。但这台电脑没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。后来,这个操作系统被命名为——UNICS(Uniplexed Information and Computing Service)。
1969年,美国贝尔实验室的Ken Thompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母),并且用B语言写了初版UNIX操作系统(叫UNICS)。
1971年,同样酷爱Space Travel的丹尼斯·里奇为了能早点儿玩上游戏,加入了汤普森的开发项目,合作开发UNIX。他的主要工作是改造B语言,使其更成熟。 [6]
1972年,美国贝尔实验室的丹尼斯·里奇在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1973年初,C语言的主体完成。汤普森和里奇迫不及待地开始用它完全重写了UNIX。此时,编程的乐趣使他们已经完全忘记了那个“Space Travel”,一门心思地投入到了UNIX和C语言的开发中。随着UNIX的发展,C语言自身也在不断地完善。直到2020年,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承汤普逊和里奇之手的代码。 [6]
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。C语言强大的移植性(Portability)在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha、SPARC和ARM等机器上运行。而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可在哪种架构的处理器运行。 [6]
1977年,丹尼斯·里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
C语言继续发展,在1982年,很多有识之士和美国国家标准协会(ANSI)为了使C语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商、编译器及其他软件工具生产商、软件设计师、顾问、学术界人士、C语言作者和应用程序员组成。1989年,ANSI发布了第一个完整的C语言标准——ANSI X3.159-1989,简称“C89”,不过人们也习惯称其为“ANSI C”。C89在1990年被国际标准化组织(International Standard Organization,ISO)一字不改地采纳,ISO官方给予的名称为:ISO/IEC 9899,所以ISO/IEC9899:1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC 9899:1999,简称“C99”。 [6]在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。
2018年6月,ISO发布了ISO/IEC9899:2018,简称“C18”(或“C17”) [10]。C18标准没有引入新的语言特性,只对C11进行了补充与修正。
2022年9月3日,ISO于Open Standards(计算机标准开放组织)网站上发布了新的C语言标准定稿,称为 ISO/IEC 9899:2023,简称“C23”。 [13-14]
语言特点
播报
编辑
主要特点
C语言是一种结构化语言,它有着清晰的层次,可按照模块的方式对程序进行编写,十分有利于程序的调试,且c语言的处理和表现能力都非常的强大,依靠非常全面的运算符和多样的数据类型,可以轻易完成各种数据结构的构建,通过指针类型更可对内存直接寻址以及对硬件进行直接操作,因此既能够用于开发系统程序,也可用于开发应用软件。通过对C语言进行研究分析,总结出其主要特点如下:
(1)简洁的语言
C语言包含的各种控制语句仅有9种,关键字也只有32个,程序的编写要求不严格且以小写字母为主,对许多不必要的部分进行了精简。实际上,语句构成与硬件有关联的较少,且C语言本身不提供与硬件相关的输入输出、文件管理等功能,如需此类功能,需要通过配合编译系统所支持的各类库进行编程,故c语言拥有非常简洁的编译系统。 [5]
(2)具有结构化的控制语句
C语言是一种结构化的语言,提供的控制语句具有结构化特征,如for语句、if...else语句和switch语句等。可以用于实现函数的逻辑控制,方便面向过程的程序设计。 [5]
(3)丰富的数据类型
C语言包含的数据类型广泛,不仅包含有传统的字符型、整型、浮点型、数组类型等数据类型,还具有其他编程语言所不具备的数据类型,其中以指针类型数据使用最为灵活,可以通过编程对各种数据结构进行计算。 [5]
(4)丰富的运算符
C语言包含34个运算符,它将赋值、括号等均视作运算符来操作,使C程序的表达式类型和运算符类型均非常丰富。 [5]
(5)可对物理地址进行直接操作
C语言允许对硬件内存地址进行直接读写,以此可以实现汇编语言的主要功能,并可直接操作硬件。C语言不但具备高级语言所具有的良好特性,又包含了许多低级语言的优势,故在系统软件编程领域有着广泛的应用。 [5]
(6)代码具有较好的可移植性
C语言是面向过程的编程语言,用户只需要关注所被解决问题的本身,而不需要花费过多的精力去了解相关硬件,且针对不同的硬件环境,在用C语言实现相同功能时的代码基本一致,不需或仅需进行少量改动便可完成移植,这就意
没有合适的资源?快使用搜索试试~ 我知道了~
这是C语言集训营1期的代码和板书存放的仓库.zip
共81个文件
c:37个
png:29个
txt:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 91 浏览量
2024-04-19
21:20:22
上传
评论
收藏 42.04MB ZIP 举报
温馨提示
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(Dennis MacAlistair Ritchie)以肯尼斯·蓝·汤普森(Kenneth Lane Thompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSI C”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。 [5] C语言之所以命名为C,是因为C语言源自Ken Thompson发明的B语言,而B语言则源自BCPL语言。 1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
资源推荐
资源详情
资源评论
收起资源包目录
这是C语言集训营1期的代码和板书存放的仓库.zip (81个子文件)
c-language-training-camp-1-master
test_7_20_2
test_7_20_2
test.c 2KB
test2.c 79B
2023-08-14-板书.png 689KB
2023-09-25-板书.png 1.54MB
game
game
test.c 913B
game.h 493B
game.c 2KB
2023-09-05-板书.png 770KB
test_8_14
test_8_14
test.c 7KB
2023-10-25-板书.png 1.01MB
2023-09-20-板书.PNG 2.62MB
2023-08-01-板书.png 1.32MB
test_9_5
test_9_5
test.c 5KB
2023-09-11-板书.png 1.44MB
testa_8_9
testa_8_9
test.c 4KB
test_9_18
test_9_18
test.c 7KB
2023-08-10-板书.png 615KB
test_7_21
test_7_21
test.c 4KB
函数栈帧的创建.png 439KB
test_8_8
test_8_8
test.c 3KB
test_8_5
test_8_5
test.c 6KB
2023-07-27-板书.png 1.5MB
2023-07-20-板书.png 2.68MB
2023-09-24-板书.png 2.77MB
test_9_17
test_9_17
test.c 5KB
test_7_24
test_7_24
test.c 6KB
test_9_11
test_9_11
test.c 5KB
2023-08-05-板书.png 1.7MB
test_7_23
test_7_23
test.c 6KB
add.c 33B
2023-09-07-板书.png 1.7MB
2023-07-29-函数(2)+扫雷游戏.png 1.28MB
test_9_20
test_9_20
test.c 1022B
test.txt 26B
2023-09-17-板书.png 3.21MB
2023-07-23-板书.png 1.18MB
test_7_28
test_7_28
test.c 5KB
test_7_29
test_7_29
test.c 2KB
add.lib 3KB
add.h 99B
add.c 379B
test_8_16
test_8_16
test.c 6KB
2023-09-13-板书.png 2.33MB
test_8_1
test_8_1
test.c 2KB
add
add
add.h 43B
add.c 90B
test_9_13
test_9_13
test.c 4KB
test_8_12
test_8_12
test.c 4KB
2023-08-08-板书.png 1.6MB
test_9_7
test_9_7
test.cpp 5KB
2023-07-28-板书.png 2.76MB
2023-09-18-动态内存管理-代码和板书.png 2.22MB
2023-07-24-板书.png 1.02MB
Snake
Snake
test.c 560B
snake.h 2KB
案例测试代码.c 3KB
snake.c 6KB
test_7_27
test_7_27
test.c 7KB
2023-10-22-板书.png 1.17MB
test_9_24
test_9_24
data.txt 9B
test.c 5KB
data2.txt 477B
test.txt 6B
add.c 97B
data1.txt 477B
.gitignore 466B
test_8_10
test_8_10
test.c 6KB
2023-08-09-板书.png 1.96MB
2023-08-17-板书.png 1.85MB
2023-08-04-板书.png 1.43MB
test_9_25
test_9_25
test.c 2KB
test2.c 3KB
add.h 13B
add2.h 211B
2023-08-12-板书.png 1.02MB
2023-07-21-板书.png 1.13MB
2023-08-16-板书.png 1.03MB
test_8_17
test_8_17
test.c 7KB
test_7_20_1
test_7_20_1
test.c 99B
test_8_4
test_8_4
test.c 2KB
新建文本文档.txt 10KB
共 81 条
- 1
资源评论
野生的狒狒
- 粉丝: 2277
- 资源: 1988
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- LS416 高性能DSP的声控处理芯片语音识别模块AD设计硬件(原理图+PCB)+L2416-M-26P模块封装库+器件手册
- 基于tensorflow实现LSTM, CNN, SVM, MLP语音情感识别源码.zip
- 基于JSP在线学生选课管理系统源码.zip
- 基于JSP在线学生信息管理系统源码.zip
- 常用DHT11 MIC SHT11 VS1838B CHT8305 MQ-3 温湿度气体等传感元件2D3D封装库.PcbLib
- 基于JSP在线新闻管理系统包含前后台源码.zip
- 基于JSP在线文具销售平台商城源码.zip
- tiamo软件教程.doc
- nvm管理Nodejs多版本工具
- Unit1Howcanwebecomegoodlearners知识点整理(良心出品必属精品).doc
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功