一 C语言发展史
1、 它的原型ALGOL 60语言。(也成为A语言);
2、 1963年,剑桥大学将ALGOL 60语言发展成为CPL(Combined Programming Language)语言。
3、 1967年,剑桥大学的Matin Richards 对CPL语言进行了简化,于是产生了BCPL语言。
4、 1970年,美国贝尔实验室的Ken Thompson将BCPL进行了修改,并为它起了一个有趣的名字“B语言”。意思是将CPL语言煮干,提炼出它的精华。并且他用B语言写了第一个UNIX操作系统。
5、 而在1973年,B语言也给人“煮”了一下,美国贝尔实验室的D.M.RITCHIE在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
6、 为了使UNIX操作系统推广,1977年Dennis M.Ritchie 发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。
7、 1978年Brian W.Kernighian和Dennis M.Ritchie出版了名著《The C Programming Language》,从而使C语言成为目前世界上流行最广泛的高级程序设计语言。
8、 1988年,随着微型计算机的日益普及, 出现了许多C语言版本。由于没有统一的标准,使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准, 成为现行的C语言标准 3.C语言的主要特点 。C语言发展迅速, 而且成为最受欢迎的语言之一, 主要因为它具有强大的功能。许多著名的系统软件, 如DBASE Ⅲ PLUS、DBASE Ⅳ 都是由C 语言编写的。用C语言加上一些汇编语言子程序, 就更能显示C语言的优势了,象PC- DOS 、WORDSTAR等就是用这种方法编写的。
二 C语言概述
2.1 简介
计算机语言的种类非常的多,总的来说可以分成机器语言,汇编语言,高级语言三大类。而目前通用的编程语言有两种形式:汇编语言与高级语言。机器语言是直接用二进制代码指令表达的计算机语言,直接对硬件进行操作,而汇编语言其实就是将这些机器指令用英文缩写的标识符,更容易识别和记忆,它同样需要编程者将每一步具体的操作命令的形式写出来。而高级语言则是将许多相关的机器指令合成为单条指令并去掉了与具体操作有关但与完成工作无关的细节,而具体细分,又可以分成两类:(1)解释类(边翻译边执行);(2)编译类(先生成后执行)。然而C语言,是一种计算机程序设计语言,虽然细分是属于高级语言,但是它同时具有汇编语言的特点,因此又称之为“中级语言”。
2.2 优点
简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。
运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。
数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。 同时对于不同的编译器也有各种
C是结构式语言
结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。
语法限制不太严格,程序设计自由度大
虽然C语言也是强类型语言,但它的语法比较灵活,允许程序编写者有较大的自由度。
允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。
生成目标代码质量高,程序执行效率高
一般只比汇编程序生成的目标代码效率低10へ20%。
适用范围大,可移植性好
C语言有一个突出的优点就是适合于多种操作系统,如DOS、UNIX、windows 98.windows NT;也适用于多种机型。C语言具有强大的绘图能力,可移植性好,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画,它也是数值计算的高级语言。
2.3 缺点
1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。
三、一个简单的程序
首先我们看一个简单的程序,这个程序简单地实现一个输入自己的名字,输出你输入的名字的功能,现在,从第一行开始讲解,源代码如下:
/* 头函数声明 */
#include<stdio.h>
/* 主函数执行区 */
int main()
{
char name[255]; //定义一个字符串组
printf("please enter your name:"); //输入提示
scanf("%s",name); //用户输入
printf("your name is %s\n",name); //输出结果
return 0;
}
3.1 注释
第一行,我们看到了“/* 头函数声明 */”这样的文字,这个就是我们所说的注释,大多数的语言都含有两种注释方式,C语言也不例外,“/* */”这种注释方式在两对符号里面的文字是注释部分,而接下来会看到的“//”则是指当行属于该符号后的所有文字将会成为注释。注释相当于是程序的贴身文档,这里只谈使用。
3.2 头文件
“#include<stdio.h>”这是申明了使用到哪个头文件的使用方法,输入输出的scanf和printf这两个函数的就在stdio.h这个头文件里,而我们在程序中使用了什么样的函数就要调用什么样的头文件,同样的,自己也可以写头文件,其实头文件就是一个仓库,你要什么就拿什么,但是你得注明是什么仓库,或者自己往仓库里丢东西,自己要用的时候拿来用。
3.3 主函数
Int main()
{
return 0;
}
这个是主函数的通常表达形式,主函数是什么?为什么要用main?这两个问题无聊但又显的刨根究底,C语言一个源文件可以有很多的函数,当执行到这个源文件的时候程序又怎么跑?于是最简单明了的规定,每个源文件有一个主函数,而执行的时候从这个主函数开始,随主函数的结束而结束。主函数的意义就这样诞生了,而为什么用main,这个英文意思就是这个,相当于好比为什么这个东西叫啥的用法。至于这个return 0,我们都知道执行一个源文件,但是我们怎么知道这个源文件执行的怎么样?于是给这个源文件设定了一个值,这个值记录了这个程序执行的情况,return 0 即是返回0的意思,放在主函数的末尾,用于通知计算机这个程序执行完成,倘若返回的不是0,那么这个程序肯定是在执行到某一步的时候异常中断或者某种原因而强制结束运行。
3.4 定义
Char name[255]这是个定义语句,意思就是说定义了一个长度为255字符的字符串,这么理解,我的程序要使用一个量来记录这个程序执行的时候所要用到的东西,那么很简单,拿个箱子过来,这个箱子的外面写着name作为标签,箱子的品种是有很多char,大小为255的箱子,那么程序执行的时候就可以用name这个标识符随意地从箱子里取出东西,放入东西。Char只是一种数据类型的一种,C语言数据类型将在下面的章节中详细介绍。
3.5 输入输出
输入输出用到了scanf和printf这两个函数,这两个函数的具体实现在stdio.h这个头文件中,我们也不得而知具体有什么用,但是我们可以知道的有一点,一个基本的程序要实现的就是输入,处理,输出这三个基本的交互步骤,这里简单地实现了交互,虽然只是输入输出而已。
3.6 转义符
“\n”这个字符在显示屏上的作用是换行的意思,这么理解:printf输出本身识别了”\”这个符号,这个符号相当于告诉了这个函数接下来的东西有特别的意义,而且对于出现的不用字符设定了相关的效果,具体什么字符出现什么效果不具体展开。