几种主流的C语言开发环境

c语言不仅是it的必修课,也是所有理工科、甚至所有专业的必修课。它具有简洁紧凑、灵活方便、适用范围大、可移植等优点,是应用最为广泛的一种高级程序设计语言。
计算机语言概述
计算机语言是用于人与计算机间通信的语言,为使计算机进行各种不同的工作,就需要有一种专门用来编写计算机程序的字符、数字和语法规则,而这些规则构成计算机的指令。计算机语言分机器语言、汇编语言和高级语言3种,下面将分别进行详细讲解。
机器语言
计算机工作基于二进制,它只能识别和接受由1和0组成的指令,其中1表示通电,0表示断电,这种计算机能直接识别和接受的二进制代码称为机器指令。机器指令的集合就是该计算机的机器语言,机器语言具有灵活、直接执行和速度快等特点。不同型号的计算机其机器语言是不相通的,按照一种计算机的机器指令编制的程序,不能在另一种计算机上执行。因此用机器语言编写程序,编程人员要首先熟记所用计算机的全部指令代码和代码的涵义。而且,编写出来的程序都是0和1的指令代码,直观性差,容易出错。因此只有极少数的计算机专业人员会学习和使用机器语言,绝大多数的程序员不再学习机器语言。
汇编语言
尽管机器语言对计算机来说很好懂也很好用,但是对于编程人员来说,记住0和1的组成的指令简直就是煎熬,为了解决机器语言的难记忆问题,汇编语言诞生了,它用简洁的符号串或字母来替代不易记忆的机器语言,而计算机识别不了符号串,这就需要一个将 这些符号翻译成机器语言的程序,把这种程序称为汇编程序。汇编程序里一条指令只能对应实际操作中的一个很细小的动作,例如自增、移动,所以汇编源程序一般比较繁长、易出错,并且使用汇编语言编程需要有扎实的计算机知识,才能编出高质量代码。
c语言
绝大数编程者喜欢高级语言,它简化了程序中的指令、略去了很多细节,并且与计算机的硬件关系不大,更利于程序员编程。此外,高级语言经历了结构化程序设计和面向对象程序设计,使得程序可读性、可靠性、可维护性都增强。常见的高级语言包括vb、c、c++、java、c#、python等等。
在c语言诞生以前,系统软件主要是用汇编语言编写的,由于汇编语言程序依赖于计算机硬件,其可读性和可移植性都极差,一般的高级语言又难以实现对计算机硬件的直接操作(这正是汇编语言的优势),于是人们迫切希望有一种兼有汇编语言和高级语言特性的新语言,c语言就在这种需求下应运而生。
c语言的发展颇为有趣。它的原型algol 60语言,也称为a语言。
1963年,剑桥大学将algol 60语言发展成为cpl(combined programming language)语言。
1967年,剑桥大学的马丁·理查兹(matin richards)对cpl语言进行了简化,于是产生了bcpl语言。
1970年,美国贝尔实验室的肯·汤普森(ken thompson)将bcpl进行了修改,并为它起了一个有趣的名字“b语言”,其含义是将cpl语言煮干,提炼出它的精华,并且他用b语言写了第一个unix操作系统。
1973年,美国贝尔实验室的丹尼斯·里奇(dennis m.ritchie)在b语言的基础上设计出了一种新的语言,他取了bcpl的第二个字母作为这种语言的名字,即c语言。
1978年,布赖恩•凯尼汉(brian w.kernighan)和丹尼斯·里奇(dennis m.ritchie)出版了名著《the c programming language》,从而使c语言成为目前世界上流传最广泛的高级程序设计语言。
早期的c语言主要是用于unix系统,由于c语言的强大功能和各方面的优点逐渐为人们认识。到了八十年代,c开始进入其它操作系统,并很快在各类大、中、小和微型计算机上得到了广泛的使用,成为当代最优秀的程序设计语言之一。
随着微型计算机的日益普及,出现了许多c语言版本。由于没有统一的标准,使得这些c语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准学会(ansi)于1989年为c语言制定了一套ansi标准,即c语言标准ansi x3.159-1989,被称为c89。之后在1990年,国际标准化组织iso也接受了同样的标准iso9899-1990,该标准被称为c90。这两个标准只有细微的差别,因此,一般而言c89和c90指的是同一个c语言标准。在ansi标准化发布了c89标准以后,c语言的标准在一段相当的时间内都保持不变,直到1999年ansi通过了c99标准,c99标准相对c89做了很多修改,增加了基本数据类型、关键字和一些系统函数等,这个版本就是通常提及的c99。但由于很多编译器仍然没有对c99提供完整的支持,因此本书将按照c89标准来进行讲解,在适当时会补充c99标准的规定和用法。
c语言对操作系统和系统使用程序以及需要对硬件进行操作的场合,用c语言明显优于其它高级语言,许多大型应用软件都是用c语言编写的。它还具有绘图能力强,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画它是数值计算的高级语言。主要特征如下:
①简洁紧凑、灵活方便:
c语言一共只有32个关键字,9种控制语句,程序书写自由,主要用小写字母表示。它把高级语言的基本结构和语句与低级语言的实用性结合起来。
②运算符丰富:
c的运算符包含的范围很广泛,共有种34个运算符。c语言把括号、赋值、强制类型转换等都作为运算符处理。从而使c的运算类型极其丰富表达式类型多样化,灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
③数据结构丰富:
c的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据类型的运算。并引入了指针概念,使程序效率更高。另外c语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
④结构式语言:
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。c语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
⑤程序设计自由:
一般的高级语言语法检查比较严,能够检查出几乎所有的语法错误。而c语言允许程序编写者有较大的自由度。
⑥直接访问物理地址:
c语言可直接访问物理地址,可以直接对硬件进行操作,因此c语言既具有高级语言的功能,又具有低级语言的许多功能,能够象汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可以用来写系统软件。
⑦程序执行效率高:
c语言程序生成代码质量高,程序执行效率高,一般只比汇编程序生成的目标代码效率低10~20%。
⑧可移植:
c语言有一个突出的优点就是适合于多种操作系统,如dos、unix,也适用于多种机型。
主流开发环境
较早期程序设计的各个阶段都要用不同的软件来进行处理,如先用字处理软件编辑源程序,然后用链接程序进行函数、模块连接,再用编译程序进行编译,开发者必须在几种软件间来回切换操作。
现在的编程开发软件将编辑、编译、调试等功能集成在一个桌面环境中,这就是集成开发环境,又称ide(integrated development environment),将它们集成在一起这样就大大方便了用户。
ide为用户使用c、c++、java和delphi等现代编程语言提供了方便。不同的技术体系有不同的ide。比如visual studio可以称为c、c++、vb、c#等语言的集成开发环境,所以visual studio可以叫做ide。同样,borland的jbuilder也是一个ide,它是java的ide。eclipse也是一个ide,可以用于开发java语言和c++语言。下面将介绍几种主流的c语言开发环境。
①code::bloocks
code::blocks 是一个体积小、开放源码、免费的跨平台c/c++集成开发环境,它提供了大量的工程模板,支持插件,并且具有强大而灵活的配置功能,是目前主流的开发环境。
②microsoft visual studio
microsoft visual studio是美国微软公司推出的集成开发环境。它包括整个软件生命周期中所需要的大部分工具,如代码管控工具、集成开发环境等,但软件体积偏大,目前最新版本为visual studio 2015。
③eclipse
eclipse是用于java语言开发的集成开发环境,现在eclipse已经可以用来开发c、c++、python和php等众多语言,此外,也可以安装插件,比如cdt是eclipse的插件,它使得eclipse可以作为c/c++的集成开发环境。
④vim
vim是一个功能强大的文本编辑器,它是从vi编辑器发展过来的,可以通过插件扩展功能来达到和集成开发环境相同的效果。因此,vim有的时候也被程序员当做集成开发环境使用。
⑤microsoft visual c++6.0
microsoft visual c++ 6.0,简称vc6.0,是微软于1998年推出的一款c++编译器,集成了mfc 6.0,包含标准版(standard edition)、专业版(professional edition)与企业版(enterprise edition)[2]。发行至今一直被广泛地用于大大小小的项目开发。本书假设您的开发环境为microsoft visual c++ 6.0。
第一个c程序通过前面对c语言的介绍,相信大家已经对c语言产生了浓厚的兴趣,下面正式开启c语言的编程之旅。为了让初学者对学习c语言产生足够的信心,第一个程序尽量简短。
#include
int main()
{
printf(“这是第一个c语言程序!n”);
return 0;
}
例子代码实现了一个c程序,在屏幕上输出“这是第一个c语言程序!”信息。下面对其中代码逐行进行详细地解释。
第1行:字符‘#’是预处理标志,用来对文件进行预处理操作。预处理标志表示该行代码要最先处理,所以它要在编译器编译代码之前运行。include是预处理指令。它后面跟着一对尖括号,表示将尖括号中的文件在这里读入。stdio是standard input output的缩写形式,即“标准输入输出”,stdio.h就是标准输入输出头文件,这个头文件中声明了用于输入或输出的函数。由于此程序中用到了输出函数printf(),因此需要添加输入输出头文件。
第2行:声明了一个main函数(也称主函数),其中int是函数的返回值类型,每个函数都需要注明其返回值类型,表示在函数结束后,要向操作系统返回的数值类型。“()”则表明是一个函数。main函数的本质是“函数”,但它与普通函数有着本质的区别,普通函数需要由其他函数调用或者激活,main函数则是在程序开始时自动执行。每个c程序都有一个main函数,它是程序的入口。在上面的c程序中,main函数实现了屏幕上输出“这是第一个c语言程序!”的功能。
第3行:左大括号“{”表示函数的开始。
第4行:使用printf函数来输出一行信息。printf是print format的缩写,print是打印的意思,format是格式化的意思,printf则是格式化输出或者按格式输出。“()”则表明printf是一个函数名,其中放置的是main函数传递给printf函数的信息。如上面程序中的“这是第一个c语言程序!”这个信息叫做参数,完成的名称为函数的实际参数。printf函数接收到main函数传递给它的参数,然后将双引号之间的内容按照一定的格式输出到屏幕上。
第5行:return关键字,表示返回,作用是从函数中返回,后面跟着要返回的值——0。由于该句被添加到main函数中,表示main函数向操作系统返回一个0值(普通函数在执行完毕后,都会返回一个执行结果,return
将这个执行结果返回给操作系统)。操作系统通过返回值来了解程序退出的状态,一般用0表示正常,用1表示异常。如果返回值类型为void,return后面则不用跟返回值,直接写return即可终止函数的运行。
第6行:右大括号“}”表示函数的结束。
在对main函数进行声明时,可能会发现这样的写法:main(),它没有为main函数注明返回值类型。
在c 语言中,凡是未注明返回值类型的函数,就会被编译器作为返回整型值处理。这个写法在c90标准中还是勉强允许的,但是到了c99标准就不予通过了,因此不要这样写main函数。
另外,还可能会有这样的写法:void main()。
void作为返回值类型时,则表示“无类型”,常用在对函数的参数类型、返回值、函数中的指针类型进行声明。由于任何函数都必须注明返回值类型,void则表示main函数没有返回值。有些编译器允许这种写法,有些则不允许,因此考虑到c语言的移植性,要尽量采用标准写法:int main()。
c程序运行流程
c语言并不能直接被计算机所理解,需要将c语言转变成可执行代码,即二进制代码。在c语言转变成二进制可执行代码时,是以工程为单位的。而一个工程中往往会包含多个c文件。因此,需要将每个c文件都编译成二进制代码。此时,每个c文件所对应的二进制代码是独立的。由于工程是一个系统,所以需要将所有的c文件二进制代码链接到一起,形成一个工程的可执行文件。一般程序的运行流程包括编辑、编译、连接、运行四个环节,运行c语言时也需经过这四个环节。
编辑类似于文本编辑,将程序代码输入进去,可以修改,增加,删除。
编译是将c代码转换成cpu可执行机器指令的过程,每个.c文件生成一个.obj文件。
链接是把生成的(多个) .obj 文件及用到的库文件(.lib)一起组合生成可执行文件(.exe)。
运行是指运行链接环节生成的可执行文件,得到预期结果的过程。
首先编写好c程序,然后将每个.c文件生成一个.obj文件,再将生成的.obj 文件及用到的库文件(.lib)一起组合生成可执行文件(.exe),最后运行达到预期的结果。


iphone8什么时候上市最新消息:iphone8渲染图曝光 Phone8就这样子了,你会买?
RPM的基础知识
中国锂电产业链布局欧洲市场已经成为必然趋势
机械稳定器和电子稳定器哪个最好
浅谈电源与地之间电容的主要作用
几种主流的C语言开发环境
探讨iPhone的困境和机会
RFID文件管理系统的结构、功能及优点
OZ9RR与推挽驱动电路构成的高压板电路
自动重合闸漏电保护器的工作条件_自动重合闸漏电保护器配置要求
LifeSmart云起成为冬奥村智能家居项目指定供应商
迪信通CEO:oppo那些手机厂商为何回归线下渠道
小米6最新消息:小米6亮白版“王牌”来袭,7月14日开售,又要开始抢购了!
微软助力企业打造现代化安全战略 伟世通推出汽车应用商店
中芯国际发布公告:已知悉梁孟松有条件辞任的意愿
任务调度开源代码是什么
端点电流检测芯片,我们该如何选择?
L3G4200DH高性能三轴数字输出陀螺仪
智能手表能做到的事现在可以通过拨弄纹身实现
“新基建”将开启数据中心新一轮增长