C语言是一门面向过程的计算机编程语言,与C++、Java等面向对象编程语言有所不同。C语言的设计目标是提供一种能以简易的方式编译、处理低级存储器、仅产生少量的机器码以及不需要任何运行环境支持便能运行的编程语言。C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编语言代码生成的目标程序效率低10%~20%。因此,C语言可以编写系统软件。
当前阶段,在编程领域中,C语言的运用非常之多,它兼顾了高级语言和汇编语言的优点,相较于其它编程语言具有较大优势。计算机系统设计以及应用程序编写是C语言应用的两大领域。同时,C语言的普适较强,在许多计算机操作系统中都能够得到适用,且效率显著。
C语言拥有经过了漫长发展历史的完整的理论体系,在编程语言中具有举足轻重的地位。
二十世纪八十年代,美国国家标准局为了避免各开发厂商用的C语言语法产生差异,给C语言制定了一套完整的美国国家标准语法,称为ANSIC。作为C语言最初的标准。2011年12月8日,国际标准化组织(ISO)和国际电工委员会(IEC)发布的C11标准是C语言的第三个官方标准,也是C语言的最新标准,该标准更好的支持了汉字函数名和汉字标识符,一定程度上实现了汉字编程。
C语言编译器普遍存在于各种不同的操作系统中,例如MicrosoftWindows,MacO X,Linux,Unix等。C语言的设计影响了众多后来的编程语言,例如C++、Objective-C、Java、C#等。
冯·诺依曼在1945年提出了现代计算机的若干思想,被后人称为冯·诺依曼思想,这是计算机发展史上的里程碑。自1945年至今大多采用其结构,因此冯。诺依曼被称为计算机之父,他的冯诺依曼体系结构计算机由运算器、控制器、存储器、输入设备、输出设备五大部件构成。C语言拥有一套完整的理论体系经过了漫长的发展历史,在编程语言中具有举足轻重的地位。
C语言是一门面向过程的编译型语言,它的运行速度极快,仅次于汇编语言。C语言是计算机产业的核心语言,操作系统、硬件驱动、关键组件、数据库等都离不开C语言;不学习C语言,就不能了解计算机底层。
这套「C语言入门教程」由站长亲自执笔,将多年的编程经验灌输其中,典型的实践派。这部教程已经发布了5年,经历了5次大改版,既适合初学者入门(学习语法),也适合程序员进阶(学习底层)。
学习C语言,除了要学习语法,还要学习内存、字符编码、调试技巧以及编程思维,这些知识点本教程都做了详细讲解。
C语言诞生于美国的贝尔实验室,由丹尼斯·里奇(DennisMacAlistairRitchie)以肯·汤普森(KennethLaneThompson)设计的B语言为基础发展而来,在它的主体设计完成后,汤普森和里奇用它完全重写了UNIX,且随着UNIX的发展,c语言也得到了不断的完善。为了利于C语言的全面推广,许多专家学者和硬件厂商联合组成了C语言标准委员会,并在之后的1989年,诞生了第一个完备的C标准,简称“C89”,也就是“ANSIC”,截至2020年,最新的C语言标准为2018年6月发布的“C18”。
C语言之所以命名为C,是因为C语言源自KenThompson发明的B语言,而B语言则源自BCPL语言。
1967年,剑桥大学的MartinRichards对CPL语言进行了简化,于是产生了BCPL(BasicCombinedProgrammingLanguage)语言。c语言
20世纪60年代,美国ATu0026T公司贝尔实验室(ATu0026TBellLaboratory)的研究员KenThompson闲来无事,手痒难耐,想玩一个他自己编的,模拟在太阳系航行的电子游戏——SpaceTravel。他背着老板,找到了台空闲的机器——PDP-7。但这台机器没有操作系统,而游戏必须使用操作系统的一些功能,于是他着手为PDP-7开发操作系统。后来,这个操作系统被命名为——UNIX。
1970年,美国贝尔实验室的KenThompson,以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。
1971年,同样酷爱SpaceTravel的DennisM.Ritchie为了能早点儿玩上游戏,加入了Thompson的开发项目,合作开发UNIX。他的主要工作是改造B语言,使其更成熟。
1972年,美国贝尔实验室的D.M.Ritchie在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1973年初,C语言的主体完成。Thompson和Ritchie迫不及待地开始用它完全重写了UNIX。此时,编程的乐趣使他们已经完全忘记了那个SpaceTravel,一门心思地投入到了UNIX和C语言的开发中。随着UNIX的发展,C语言自身也在不断地完善。直到今天,各种版本的UNIX内核和周边工具仍然使用C语言作为最主要的开发语言,其中还有不少继承Thompson和Ritchie之手的代码。
在开发中,他们还考虑把UNIX移植到其他类型的计算机上使用。C语言强大的移植性(Portability)在此显现。机器语言和汇编语言都不具有移植性,为x86开发的程序,不可能在Alpha,SPARC和ARM等机器上运行。而C语言程序则可以使用在任意架构的处理器上,只要那种架构的处理器具有对应的C语言编译器和库,然后将C源代码编译、连接成目标二进制文件之后即可运行。
1977年,丹尼斯·里奇发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
C语言继续发展,在1982年,很多有识之士和美国国家标准协会(ANSI)为了使C语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。委员会由硬件厂商、编译器及其他软件工具生产商、软件设计师、顾问、学术界人士、C语言作者和应用程序员组成。1989年,ANSI发布了第一个完整的C语言标准——ANSIX3.159-1989,简称“C89”,不过人们也习惯称其为“ANSIC”。C89在1990年被国际标准化组织(InternationalStandardOrganization,ISO)一字不改地采纳,ISO官方给予的名称为:ISO/IEC9899,所以ISO/IEC9899:1990也通常被简称为“C90”。1999年,在做了一些必要的修正和完善后,ISO发布了新的C语言标准,命名为ISO/IEC9899:1999,简称“C99”。
在2011年12月8日,ISO又正式发布了新的标准,称为ISO/IEC9899:2011,简称为“C11”。
GCC,GNU组织开发的开源免费的编译器
MinGW,Windows操作系统下的GCC
Clang,开源的BSD协议的基于LLVM的编译器
VisualC++::cl.exe,MicrosoftVC++自带的编译器
Code::Blocks,开源免费的C/C++IDE
CodeLite,开源、跨平台的C/C++集成开发环境
Dev-C++,可移植的C/C++IDE
C-Free
LightTable
VisualStudio系列
c语言下面是一个在标准输出设备(stdout)上,印出Hello,world!字符串的简单程序。类似的程序,通常作为初学编程语言时的第一个程序:
#includeu003cstdio.hu003eintmain(void){printf(Hello,World!n);return0;}
起初,C语言没有官方标准。1978年由美国电话电报公司(ATu0026T)贝尔实验室正式发表了C语言。布莱恩·柯林汉(BrianKernighan)和丹尼斯·里奇(DennisRitchie)出版了一本书,名叫《TheCProgrammingLanguage》。这本书被C语言开发者们称为Ku0026R,很多年来被当作C语言的非正式的标准说明。人们称这个版本的C语言为Ku0026RC。
Ku0026RC主要介绍了以下特色:
结构体(struct)类型
长整数(longint)类型
无符号整数(unsignedint)类型
把运算符=+和=-改为+=和-=。因为=+和=-会使得编译器不知道使用者要处理i=-10还是i=-10,使得处理上产生混淆。
即使在后来ANSIC标准被提出的许多年后,Ku0026RC仍然是许多编译器的最准要求,许多老旧的编译器仍然运行Ku0026RC的标准。
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年,美国国家标准协会(ANSI)成立了一个委员会X3J11,来制定C语言标准。
1989年,美国国家标准协会(ANSI)通过了C语言标准,被称为ANSIX3.159-1989ProgrammingLanguageC。因为这个标准是1989年通过的,所以一般简称C89标准。有些人也简称ANSIC,因为这个标准是美国国家标准协会(ANSI)发布的。
1990年,国际标准化组织(ISO)和国际电工委员会(IEC)把C89标准定为C语言的国际标准,命名为ISO/IEC9899:1990-Programminglanguages--C。因为此标准是在1990年发布的,所以有些人把简称作C90标准。不过大多数人依然称之为C89标准,因为此标准与ANSIC89标准完全等同。
1994年,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C89标准修订版,名叫ISO/IEC9899:1990/Cor1:1994,有些人简称为C94标准。
1995年,国际标准化组织(ISO)和国际电工委员会(IEC)再次发布了C89标准修订版,名叫ISO/IEC9899:1990/Amd1:1995-CIntegrity,有些人简称为C95标准。
1999年1月,国际标准化组织(ISO)和国际电工委员会(IEC)发布了C语言的新标准,名叫ISO/IEC9899:1999-Programminglanguages--C,简称C99标准。这是C语言的第二个官方标准。
在C99中包括的特性有:
流程控制关键字
编译
顺序结构
选择结构
循环结构
判断语句(选择结构):
循环语句(循环结构):
跳转语句(循环结构:是否循环):
()、[]、-u003e、.、!、++、-- | 圆括号、方括号、指针、成员、逻辑非、自加、自减 |
++、--、*、u0026、~、! | 单目运算符 |
+、-、sizeof、(cast) | |
*、/、% | 算术运算符 |
+、- | 算术运算符 |
u003cu003c、u003eu003e | 位运算符 |
u003c、u003c=、u003e、u003e= | 关系运算符 |
==、!= | 关系运算符号 |
u0026 | 位与 |
^ | 位异或 |
| | 位或 |
u0026u0026 | 逻辑与 |
|| | 逻辑或 |
?、: | 条件运算符 |
/=、%=、u0026=、|=、^= | |
=、+=、-=、*=、 | |
, | 顺序运算符 |
voidmain()的用法并不是任何标准制定的。C语言标准语法是intmain,任何实现都必须支持intmain(void){/*...*/}和intmain(intargc,char*argv[]){/*...*/}。
类似于a+=a++;或者(i++)+(i++)+(i++)属于未定义行为,并不是说c语言中还未定义这种行为,它早有定论,它的结果取决于编译器实现,不要写这样的代码!
下面是一个在标准输出设备(stdout)上,印出Hello,world!字符串的简单程序。类似的程序,通常作为初学编程语言时的第一个程序:
12345 | #includeu003cstdio.hu003eintmain(){printf(Hello,World!n);return0;} |
12345678910111213141516 | #includeu003cstdio.hu003eintmain{voidmove(int*xa,int*xb);inta,b;printf(请输入两个数a,b:);scanf(%d,%d,u0026a,u0026b);move(u0026a,u0026b);printf(a=%d,b=%dn,a,b);return0;}voidmove(int*xa,int*xb){inta;a=*xa;*xa=*xb;*xb=a;} |
1.程序的第三行是对函数的声明,声明了一个有两个指针参数的无返回值函数。由于函数的定义在调用函数处下,所以必须进行声明。
2.第四行是变量的定义,定义了两个整型变量。
3.第六行输入两个数,必须以1,0这样中间有逗号的方式输入。把两个数放入变量a,b内。u0026是取地址运算符。
4.第七行调用move函数,将两个变量的值转换。
5.main函数后就是move函数的定义。
从这个例子可以看出,指针变量可以获得更多的返回值,这样是非常方便的。
本文发布于:2022-10-09 08:01:55,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/78/233793.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |