`
universsky
  • 浏览: 92168 次
文章分类
社区版块
存档分类
最新评论

计算机程序设计语言C

 
阅读更多

字母C的发展史

符号起源
字母C的产生可能是由于一个投掷棒的符号,在古埃及的象形文字里

(1)并很早出现在闪族的书面当中-大约在公元前1500年的西奈半岛。
(2)大约在公元前1000年,在比布鲁斯(古地中海港市,位于现黎巴嫩贝鲁特以北的朱拜勒,公元前第二个千年成为繁华的腓尼基城)和腓尼基的其他一些地方以及迦南的中心,这个符号是特定的线性形式。
(3)对于全部的线性形式来说。在闪族的语言中这个符号叫做gimel或是gaml,,意思是throwing stick(投掷棒)。希腊人重新改变的闪族人的命名称之为gamma。后来,当希腊人开始用从左到右书写代替从右到左书写的时候,他们从翻转了字母。
(4)除此之外,这个gamma符号用来做发音g。罗马人把这个符号应用到拉丁文里,但是他们把它了变圆滑。

(5)起初他们把这个符号用于发音g和k。后来他们区分了这两种发音的写法。C的原型被用来做k发音,而由C加了一条而变成的G被用来做g的发音。这俩个符号没有改变的被应用到了英语当中.

字母的含意
在数学及计算机科学中,表示十六进制的12
MS-DOS(2.0或以后版本)及微软视窗作业系统称第一个实体硬盘上的可开机(active)主分割中的逻辑磁盘为“C:”或“c:”,系统档案都是分别放在此磁盘的DOS、Windows或Winnt子目录中
大写C代表
在化学中,表示碳的化学符号
在乐理中,表示:
音阶中的C音
调号中于C音开始的音乐的C大调及C小调
拍子记号中的4/4拍子
在罗马数字中表示100
在国际单位制的电荷中表示库仑
在计算机科学中,有C语言、C++、C#、Objective-C等
在营养学中,表示维生素C
在生物化学中,表示胞嘧啶,是构成DNA的四种核苷酸结构之一
在物理学中,表示电容
在数学中,表示:
复数
不定积分解之常数项
圆周
在机率中,组合会以C表示。
字母c的发展史
1.5V干电池的标准尺寸之一
温度的单位摄氏(℃)
在宝石学中,钻石的鉴定标准简称“4C”,分别代表切割(Cut)、色泽(Colour)、净度(Clarity)和重量(Carat)
在电子商贸术语中,有C2C、B2C等的交易形式,C表示“Consumer”
在印刷四分色模式(CMYK)中,表示青色(Cyan)
在桥牌的叫牌过程中,C表示梅花牌(Club),如“2梅花”记作“2C”
在评核制度中,C表示“常”
在DVD及数位电视中,CC代表隐藏字幕(Closed Caption)。
小写c代表
在物理学中,代表真空中的光速,为299,792,458米每秒
在小写字母中划一竖线表示“分”(货币),¢
在国际单位制词头,c表示centi,即一百分之一(10-2)
在小写字母外围划一圆圈:?表示版权所有
在代数学中,常表示常数
在几何学中,表示截距(intercept)
在文件或电子邮件上,cc表示“副本抄送”
在度量衡中,cc是“立方厘米”(cubiccentimetre)的缩写
其他
在网络语言中,c经常被用来替代“see”,如“ic”即“I see”,“cu”即“see you”
在香港的茶餐厅中 ,侍应常将“冻”(Cold)省作“C”。例如“C0T”即“冻、柠(零)、茶(TEA)”。
字符编码
字符编码 ASCII Unicode EBCDIC 摩斯电码
大写C 67 0043 195 —·—·

小写c 99 0063 131

参看
C的变体
¢(一分货币)
?(版权)
其他字母中的相近字母
Γγ(希腊字母Gamma)

计算机程序设计语言C

中文名: c语言
类别: 计算机程序设计语言
创始人: D.M.Ritchie
创始时间: 1972年
发源: BCPL语言
常用编译软件: GCC, Microsoft Visual C++等

C语言是一种计算机程序设计语言,它既具有高级语言的特点,又具有汇编语言的特点。它由美国贝尔研究所的D.M.Ritchie于1972年推出,1978年后,C语言已先后被移植到大、中、小及微型机上,它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。它的应用范围广泛,具备很强的数据处理能力,不仅仅是在软件开发上,而且各类科研都需要用到C语言,适于编写系统软件,三维,二维图形和动画,具体应用比如单片机以及嵌入式系统开发。

C语言是1972年由美国的Dennis Ritchie设计发明的,并首

c语言宣传图[1]
次在UNIX操作系统的DEC PDP-11计算机上使用。它由早期的编程语言BCPL(Basic Combined Programming Language)发展演变而来,在1970年,AT&T贝尔实验室的Ken Thompson根据BCPL语言设计出较先进的并取名为B的语言,最后导致了C语言的问世。 而B语言之前还有A语言,取名自世界上第一位女程序员Ada(艾达)。
随着微型计算机的日益普及,出现了许多C语言版本。由于没有统一的标准, 使得这些C语言之间出现了一些不一致的地方。为了改变这种情况,美国国家标准研究所(ANSI)为C语言制定了一套ANSI标准,成为现行的C语言标准。
注:国际标准化组织ISO也制定的C语言的标准,目前被很多编译器所采用,如:GCC等。
C语言是世界上最流行、使用最广泛的高级程序设计语言之一。[2]在操作系统和系统使用程序以及需要对硬件进行操作的场合,用C语言明显优于其它高级语言,许多大型应用软件都是用C语言编写的。
C语言绘图能力强,具有可移植性,并具备很强的数据处理能力,因此适于编写系统软件,三维,二维图形和动画。它是数值计算的高级语言。
常用的编译软件有Microsoft Visual C++,Borland C++,gcc(linux系统下最常用的编译器),Watcom C++ ,Borland C++, Borland C++ Builder,Borland C++ 3.1 for DOS,Watcom C++ 11.0 for DOS,GNU DJGPP C++, Lccwin32 C Compiler 3.1,Microsoft C,High C等

C语言之所以命名为C,是因为 C语言源自Ken Thompson发

C语言创始人D.M.Ritchie[5]
明的B语言,而 B语言则源自BCPL语言。
1967年,剑桥大学的Martin Richards对CPL语言进行了简化,于是产生了BCPL(Basic Combined Programming Language)语言。
1970年,美国贝尔实验室的 Ken Thompson。以BCPL语言为基础,设计出很简单且很接近硬件的B语言(取BCPL的首字母)。并且他用B语言写了第一个UNIX操作系统。
1972年,美国贝尔实验室的 D.M.Ritchie 在B语言的基础上最终设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,这就是C语言。
1977年,Dennis M.Ritchie发表了不依赖于具体机器系统的C语言编译文本《可移植的C语言编译程序》。[6]K&R C
1978年由美国电话电报公司(AT&T)贝尔实验室正式发表了C语言。Brian Kernighan 和 Dennis Ritchie 出版了一本书,名叫《The C Programming Language》。这本书被 C语言开发者们称为"K&R",很多年来被当作 C语言的非正式的标准说明。人们称这个版本的 C语言为"K&R C"。[6]ANSI C
1970到80年代,C语言被广泛应用,从大型主机到小型微机,也衍生了C语言的很多不同版本。
1983年美国国家标准局 (American National Standards Institute,简称ANSI)成立了一个委员会,来制定 C语言标准。[7]1989年 C语言标准被批准,被称为 ANSI X3.159-1989 "Programming Language C"。这个版本的C语言标准通常被称为ANSI C。
C99
1990年,国际标准化组织ISO(International Organization for Standards)接受了89 ANSI C 为I SO C 的标准(ISO9899-1990)。1994年,ISO修订了C语言的标准。
1995年,ISO对C90做了一些修订,即“1995基准增补1(ISO/IEC/9899/AMD1:1995)”。[8]1999年,ISO又对C语言标准进行修订,在基本保留原来C语言特征的基础上,针对应该的需要,增加了一些功能,命名为ISO/IEC9899:1999。
在ANSI标准化后,C语言的标准在一段相当的时间内都保持不变,尽管C继续在改进。(实际上,NormativeAmendment1在1995年已经开发了一个新的C语言版本。但是这个版本很少为人所知。)它被ANSI于2000年3月采用。[9]C11
2001年和2004年先后进行了两次技术修正。
2011年12月8日,ISO正式公布C语言新的国际标准草案:ISO/IEC 9899:2011,即C11

基本特性

C++语言代码
1、C是高级语言:它把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。[12]2、C是结构式语言:结构式语言的显著特点是代码及数据的分隔化,即程序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次清晰,便于使用、维护以及调试。C 语言是以函数形式提供给用户的,这些函数可方便的调用,并具有多种循环、条件语句控制程序流向,从而使程序完全结构化。[12]3、C语言功能齐全:具有各种各样的数据类型,并引入了指针概念,可使程序效率更高。而且计算功能、逻辑判断功能也比较强大,可以实现决策目的的游戏。[12]4、C语言适用范围大:适合于多种操作系统,如Windows、DOS、UNIX等等;也适用于多种机型。C语言对编写需要硬件进行操作的场合,优于其它高级语言,有一些大型应用软件也是用C语言编写的。[12]5、C语言应用指针:可以直接进行靠近硬件的操作,但是C的指针操作不做保护,也给它带来了很多不安全的因素。C++在这方面做了改进,在保留了指针操作的同时又增强了安全性,受到了一些用户的支持,但是,由于这些改进增加语言的复杂度,也为另一部分所诟病。Java则吸取了C++的教训,取消了指针操作,也取消了C++改进中一些备受争议的地方,在安全性和适合性方面均取得良好的效果,但其本身解释在虚拟机中运行,运行效率低于C++/C。一般而言,C,C++,java被视为同一系的语言,它们长期占据着程序使用榜的前三名。[13]6、C语言文件由数据序列组成:可以构成二进制文件或文本文件常用的C语言IDE(集成开发环境)有Microsoft Visual C++,Dev-C++,Code::Blocks,Borland C++,Watcom C++,Borland C++ Builder,GNU DJGPP C++,Lccwin32 C Compiler 3.1,High C,Turbo C,C-Free,win-tc,xcode(mac os x)等。[14]新特性
1、对齐处理(Alignment)的标准化(包括_Alignas标志符,alignof运算符,aligned_alloc函数以及<stdalign.h>头文件。
2、_Noreturn 函数标记,类似于 gcc 的 __attribute__((noreturn))。
3、_Generic关键字。
4、多线程(Multithreading)支持,包括:_Thread_local存储类型标识符,<threads.h>;头文件,里面包含了线程的创建和管理函数。
5、增强的Unicode的支持,基于C Unicode技术报告ISO/IEC TR 19769:2004,增强了对Unicode的支持。包括为UTF-16/UTF-32编码增加了char16_t和char32_t数据类型,提供了包含unicode字符串转换函数的头文件<uchar.h>.
6、删除了 gets() 函数,使用一个新的更安全的函数gets_s()替代。
7、增加了边界检查函数接口,定义了新的安全的函数,例如 fopen_s(),strcat_s() 等等。
8、增加了更多浮点处理宏。
9、匿名结构体/联合体支持,这个在gcc早已存在,C11将其引入标准。
10、静态断言(Static assertions),_Static_assert(),在解释 #if 和 #error 之后被处理。
11、新的 fopen() 模式,(“…x”),类似 POSIX 中的 O_CREAT|O_EXCL,在文件锁中比较常用。
12、新增 quick_exit() 函数作为第三种终止程序的方式。当 exit()失败时可以做最少的清理工作。
13、_Atomic类型修饰符和<stdatomic.h>头文件。
优缺点
优点
1、简洁紧凑、灵活方便
C语言一共只有32个关键字,9种控制语句,程序书写形式自由,区分大小写。把高级语言的基本结构和语句与低级语言的实用性结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作,而这三者是计算机最基本的工作单元。[15]
title
2、运算符丰富
C语言的运算符包含的范围很广泛,共有34种运算符。C语言把括号、赋值、强制类型转换等都作为运算符处理。从而使C语言的运算类型极其丰富,表达式类型多样化。灵活使用各种运算符可以实现在其它高级语言中难以实现的运算。[15]3、数据类型丰富
C语言的数据类型有:整型、实型、字符型、数组类型、指针类型、结构体类型、共用体类型等。能用来实现各种复杂的数据结构的运算。并引入了指针概念,使程序效率更高。[16]4、表达方式灵活实用
C语言提供多种运算符和表达式值的方法,对问题的表达可通过多种途径获得,其程序设计更主动、灵活。它语法限制不太严格,程序设计自由度大,如对整型量与字符型数据及逻辑型数据可以通用等。[17]5、允许直接访问物理地址,对硬件进行操作
由于C语言允许直接访问物理地址,可以直接对硬件进行操作,因此它既具有高级语言的功能,又具有低级语言的许多功能,能够像汇编语言一样对位(bit)、字节和地址进行操作,而这三者是计算机最基本的工作单元,可用来写系统软件。[18]6、生成目标代码质量高,程序执行效率高
C语言描述问题比汇编语言迅速,工作量小、可读性好,易于调试、修改和移植,而代码质量与汇编语言相当。C语言一般只比汇编程序生成的目标代码效率低10%~20%。[17]7、可移植性好
C语言在不同机器上的C编译程序,86%的代码是公共的,所以C语言的编译程序便于移植。在一个环境上用C语言编写的程序,不改动或稍加改动,就可移植到另一个完全不同的环境中运行。[17]8、表达力强
C语言有丰富的数据结构和运算符。包含了各种数据结构,如整型、数组类型、指针类型和联合类型等,用来实现各种数据结构的运算。C语言的运算符有34种,范围很宽,灵活使用各种运算符可以实现难度极大的运算。
C语言能直接访问硬件的物理地址,能进行位(bit)操作。兼有高级语言和低级语言的许多优点。
它既可用来编写系统软件,又可用来开发应用软件,已成为一种通用程序设计语言。
另外C语言具有强大的图形功能,支持多种显示器和驱动器。且计算功能、逻辑判断功能强大。
[17]缺点
1. C语言的缺点主要表现在数据的封装性上,这一点使得C在数据的安全性上有很大缺陷,这也是C和C++的一大区别。
2. C语言的语法限制不太严格,对变量的类型约束不严格,影响程序的安全性,对数组下标越界不作检查等。从应用的角度,C语言比其他高级语言较难掌握。也就是说,对用C语言的人,要求对程序设计更熟练一些


基础语法
数据类型
C的数据类型包括:整型、字符型、实型或浮点型(单精度和双精度)、枚举类型、数组类型、结构体类型、共用体类型、指针类型和空类型。[20]
title
常量与变量
常量其值不可改变,符号常量名通常用大写。
变量是以某标识符为名字,其值可以改变的量。标识符是以字母或下划线开头的一串由字母、数字或下划线构成的序列,请注意第一个字符必须为字母或下划线,否则为不合法的变量名。变量在编译时为其分配相应存储单元。
数组
如果一个变量名后面跟着一个有数字的中括号,这个声明就是数组声明。字符串也是一种数组。它们以ASCII的NULL作为数组的结束。要特别注意的是,方括内的索引值是从0算起的。[21]指针
如果一个变量声明时在前面使用 * 号,表明这是个指针型变量。换句话说,该变量存储一个地址,而 *(此处特指单目运算符 * ,下同。C语言中另有 双目运算符 *) 则是取内容操作符,意思是取这个内存地址里存储的内容。指针是 C 语言区别于其他同时代高级语言的主要特征之一。
指针不仅可以是变量的地址,还可以是数组、数组元素、函数的地址。通过指针作为形式参数可以在函数的调用过程得到一个以上的返回值(不同于return(z)这样的仅能得到一个返回值。
指针是一把双刃剑,许多操作可以通过指针自然的表达,但是不正确的或者过分的使用指针又会给程序带来大量潜在的错误。[21]字符串
C语言的字符串其实就是char型数组,所以使用字符串并不需要引用库。但是C标准库确实包含了一些用于对字符串进行操作的函数,使得它们看起来就像字符串而不是数组。使用这些函数需要引用头文件<string.h>。[22]文件输入/输出
在C语言中,输入和输出是经由标准库中的一组函数来实现的。在ANSI/ISO C中,这些函数被定义在头文件<stdio.h>;中。
标准输入/输出
有三个标准输入/输出是标准I/O库预先定义的:
stdin标准输入
stdout标准输出
stderr输入输出错误[20]运算
C语言的运算非常灵活,功能十分丰富,运算种类远多于其它程序设计语言。在表达式方面较其它程序语言更为简洁,如自加、自减、逗号运算和三目运算使表达式更为简单,但初学者往往会觉的这种表达式难读,关键原因就是对运算符和运算顺序理解不透不全。当多种不同运算组成一个运算表达式,即一个运算式中出现多种运算符时,运算的优先顺序和结合规则显得十分重要。在学习中,对此合理进行分类,找出它们与数学中所学到运算之间的不同点之后,记住这些运算也就不困难了,有些运算符在理解后更会牢记心中,将来用起来得心应手,而有些可暂时放弃不记,等用到时再记不迟。
先要明确运算符按优先级不同分类,《C程序设计》运算符可分为15种优先级,从高到低,优先级为1 ~ 15,除第2.13级和第14级为从右至左结合外,其它都是从左至右结合,它决定同级运算符的运算顺序。[23]关键字
关键字又称为保留字,就是已被C语言本身使用,不能作其它用途使用的字。例如关键字不能用作变量名、函数名等标识符
由ANSI标准定义的C语言关键字共32个:
auto double int struct break else long switch
case enum register typedef char extern return union
const float short unsigned continue for signed void
default goto sizeof volatile do if while static inline
restrict _Bool _Complex _Imaginary _Generic[24]一、数据类型关键字
基本数据类型
void:声明函数无返回值或无参数,声明无类型指针,显示丢弃运算结果。
char:字符型类型数据,属于整型数据的一种。
int:整型数据,表示范围通常为编译器指定的内存字节长。
float:单精度浮点型数据,属于浮点数据的一种。
double:双精度浮点型数据,属于浮点数据的一种。
_Bool:布尔型
_Complex:复数的基本类型
_Imaginary:虚数,与复数基本类型相似,没有实部的纯虚数。
_Generic:C11中提供重载的接口入口。
类型修饰关键字
short:修饰int,短整型数据,可省略被修饰的int。
long:修饰int,长整型数据,可省略被修饰的int。
signed:修饰整型数据,有符号数据类型。
unsigned:修饰整型数据,无符号数据类型。
restrict:用于限定和约束指针,并表明指针是访问一个数据对象的唯一且初始的方式。
复杂类型关键字
struct:结构体声明。
union:共用体声明。
enum:枚举声明。
typedef:声明类型别名。
sizeof:得到特定类型或特定类型变量的大小。
inline:内联函数用于取代宏定义,会在任何调用它的地方展开。
存储级别关键字
auto:指定为自动变量,由编译器自动分配及释放。通常在栈上分配。
static:指定为静态变量,分配在静态变量区,修饰函数时,指定函数作用域为文件内部。
register:指定为寄存器变量,建议编译器将变量存储到寄存器中使用,也可以修饰函数形参,建议编译器通过寄存器而不是堆栈传递参数。
extern:指定对应变量为外部变量,即标示变量或者函数的定义在别的文件中,提示编译器遇到此变量和函数时在其他模块中寻找其定义。
const:与volatile合称“cv特性”,指定变量不可被当前线程/进程改变(但有可能被系统或其他线程/进程改变)。
volatile:与const合称“cv特性”,指定变量的值有可能会被系统或其他进程/线程改变,强制编译器每次从内存中取得该变量的值。
二、流程控制关键字
跳转结构
return:用在函数体中,返回特定值(如果是void类型,则不返回函数值)。
continue:结束当前循环,开始下一轮循环。
break:跳出当前循环或switch结构。
goto:无条件跳转语句。
分支结构
if:条件语句,后面不需要放分号。
else:条件语句否定分支(与if连用)。
switch:开关语句(多重分支语句)。
case:开关语句中的分支标记,与switch连用。
default:开关语句中的“其他”分支,可选。
循环结构
for循环
for循环结构是c语言中最具有特色的循环语句,使用最为灵活方便,它的一般形式为:
for(表达式1;表达式2;表达式3)循环体语句 。(其中;不能省略)
表达式
表达式1为初值表达式,用于在循环开始前为循环变量赋初值。
表达式2是循环控制逻辑表达式,它控制循环执行的条件,决定循环的次数。
表达式3为循环控制变量修改表达式,它使for循环趋向结束。
循环控制语句是在循环控制条件成立的情况下被反复执行的语句。
但是在整个for循环过程中,表达式1只计算一次,表达式2和表达式3则可能计算多次,也可能一次也不计算。循环体可能多次执行,也可能一次都不执行。
先执行表达式2,然后执行循环结构,最后表达式3,一直这样循环下去。
for循环语句是c语言种功能最为强大的语句,甚至在一定程度上可以代替其他的循环语句。
do
do循环结构,do 1 while⑵;的执行顺序是1->2->1...循环,2为循环条件。
while
while循环结构,while⑴ 2; 的执行顺序是1->2->1...循环,1为循环条件
以上循环语句,当循环条件表达式为真则继续循环,为假则跳出循环。
语法结构
顺序结构
顺序结构的程序设计是最简单的,只要按照解决问题的顺序写出相应的语句就行,它的执行顺序是自上而下,依次执行。
例如:a = 3,b = 5,现交换a,b的值,这个问题就好像交换两个杯子水,这当然要用到第三个杯子,假如第三个杯子是c,那么正确的程序为:c = a; a = b; b = c;执行结果是a = 5,b = c = 3如果改变其顺序,写成:a = b; c = a; b =c;则执行结果就变成a = b = c = 5,不能达到预期的目的,初学者最容易犯这种错误。顺序结构可以独立使用构成一个简单的完整程序,常见的输入、计算,输出三步曲的程序就是顺序结构,例如计算圆的面积,其程序的语句顺序就是输入圆的半径r,计算s = 3.14159*r*r,输出圆的面积s。不过大多数情况下顺序结构都是作为程序的一部分,与其它结构一起构成一个复杂的程序,例如分支结构中的复合语句、循环结构中的循环体等。[25]选择结构
顺序结构的程序虽然能解决计算、输出等问题,但不能做判断再选择。对于要先做判断再选择的问题就要使用选择结构。选择结构的执行是依据一定的条件选择执行路径,而不是严格按照语句出现的物理顺序。选择结构的程序设计方法的关键在于构造合适的分支条件和分析程序流程,根据不同的程序流程选择适当的选择语句。选择结构适合于带有逻辑或关系比较等条件判断的计算,设计这类程序时往往都要先绘制其程序流程图,然后根据程序流程写出源程序,这样做把程序设计分析与语言分开,使得问题简单化,易于理解。程序流程图是根据解题分析所绘制的程序执行流程图。[26]循环结构
循环结构可以减少源程序重复书写的工作量,用来描述重复执行某段算法的问题,这是程序设计中最能发挥计算机特长的程序结构,C语言中提供四种循环,即goto循环、while循环、do while循环和for循环。四种循环可以用来处理同一问题,一般情况下它们可以互相代替换,但一般不提倡用goto循环,因为强制改变程序的顺序经常会给程序的运行带来不可预料的错误。
特别要注意在循环体内应包含趋于结束的语句(即循环变量值的改变),否则就可能成了一个死循环,这是初学者的一个常见错误。
三个循环的异同点:用while和do…while循环时,循环变量的初始化的操作应在循环体之前,而for循环一般在语句1中进行的;while循环和for循环都是先判断表达式,后执行循环体,而do…while循环是先执行循环体后判断表达式,也就是说do…while的循环体最少被执行一次,而while循环和for就可能一次都不执行。另外还要注意的是这三种循环都可以用break语句跳出循环,用continue语句结束本次循环,而goto语句与if构成的循环,是不能用break和 continue语句进行控制的。
顺序结构、分支结构和循环结构并不彼此孤立的,在循环中可以有分支、顺序结构,分支中也可以有循环、顺序结构,其实不管哪种结构,均可广义的把它们看成一个语句。在实际编程过程中常将这三种结构相互结合以实现各种算法,设计出相应程序,但是要编程的问题较大,编写出的程序就往往很长、结构重复多,造成可读性差,难以理解,解决这个问题的方法是将C程序设计成模块化结构。[27]预编译与条件编译
#define 预编译宏
#if 表达式 #else if 表达式 #else #endif 条件编译
#ifdef 宏 #else #endif 条件编译
#ifndef 宏 #else #endif 条件编译
模块化程序结构
C语言的模块化程序结构用函数来实现,即将复杂的C程序分为若干模块,每个模块都编写成一个C函数,然后通过主函数调用函数及函数调用函数来实现一大型问题的C程序编写,因此常说:C程序=主函数+子函数。因此,对函数的定义、调用、值的返回等中要尤其注重理解和应用,并通过上机调试加以巩固。[28]判断语句(选择结构) 循环语句(循环结构) 跳转语句(循环结构:是否循环)
if 语句:“如果”语句 while 语句:“当…”语句 goto 语句:“转舵”语句
if—else 语句:“若…(则)…否则…”语句 do—while 语句:“做…当…(时候)”语句 break 语句:“中断”(循环)语句
switch 语句:“切换”语句 for 语句:条件语句(即“(做)…为了…”语句) continue 语句:“继续”语句(结束本次循环,继续下一次循环)
switch—case:“切换—情况”语句
return 语句:“返回馈”语句

字符表
所有的转义字符和所对应的意义:[1]转义字符 意义 ASCII码值(十进制)
\a 响铃(BEL) 007
\b 退格(BS) ,将当前位置移到前一列 008
\f 换页(FF),将当前位置移到下页开头 012
\n 换行(LF) ,将当前位置移到下一行开头 010
\r 回车(CR) ,将当前位置移到本行开头 013
\t 水平制表(HT) (跳到下一个TAB位置) 009
\v 垂直制表(VT) 011
\\ 代表一个反斜线字符''\' 092




\' 代表一个单引号(撇号)字符 039
\" 代表一个双引号字符 034
\0 空字符(NULL) 000
\ddd 1到3位八进制数所代表的任意字符 三位八进制
\xhh 1到2位十六进制所代表的任意字符 二位十六进制

运算符号
()、 []、 -> 、 .、 !、 ++、 -- 圆括号、方括号、指针、成员、逻辑非、自加、自减
++ 、 -- 、 * 、 & 、 ~ 、 ! 、 + 、 - 、 sizeof、(cast) 单目运算符
* 、 / 、 % 算术运算符
+ 、 - 算术运算符
<< 、 >> 位运算符
< 、 <= 、 > 、 >= 关系运算符
== 、 != 关系运算符号
& 位与
^ 位异或
| 位或
&& 逻辑与
|| 逻辑或
? 、 : 条件运算符
= 、 += 、 -= 、 *= 、 /= 、 %= 、 &= 、 |= 、 ^= 赋值运算符
, 顺序运算符

比较特别的是,比特右移(>>)运算符可以是算术(左端补最高有效位)或是逻辑(左端补 0)位移。例如,将 11100011 右移 3 比特,算术右移后成为 11111100,逻辑右移则为 00011100。因算术比特右移较适于处理带负号整数,所以几乎所有的编译器都是算术比特右移。
运算符的优先级从高到低大致是:单目运算符、算术运算符、关系运算符、逻辑运算符、条件运算符、赋值运算符(=)和逗号运算符。[29]程序结构
1.一个C语言源程序可以由一个或多个源文件组成。[30]2.每个源文件可由一个或多个函数组成。
3.一个源程序不论由多少个文件组成,都有一个且只能有一个main函数,即主函数。
4.源程序中可以有预处理命令(包括include 命令,ifdef、ifndef命令、define命令),预处理命令通常应放在源文件或源程序的最前面。
5.每一个说明,每一个语句都必须以分号结尾。但预处理命令,函数头和花括号“}”之后不能加分号。(结构体、联合体、枚举型的声明的“}”后要加“;”。)
6.标识符,关键字之间必须至少加一个空格以示间隔。若已有明显的间隔符,也可不再加空格来间隔。[31]书写规则
一个说明或一个语句占一行。
用{} 括起来的部分,通常表示了程序的某一层次结构。{}一般与该结构语句的第一个字母对齐,并单独占一行。
低一层次的语句或说明可比高一层次的语句或说明缩进若干格后书写。以便看起来更加清晰,增加程序的可读性。在编程时应力求遵循这些规则,以养成良好的编程风格。[31]经典错误
void main()的用法并不是任何标准制定的,是Microsoft制定的。大部分编译器不支持这种写法。C语言正确的语法是int main()或int main(int argc, char *argv[])。在 C++ 标准中,虽然 main 的标准型态应是int,但编译器实现中也可以自行定义型态,不过,所有实现均应接受 int main()的。如果坚持使用void main()会使C程序失去跨平台的移植特性


C语言之父
丹尼斯·里奇, C语言之父,UNIX之父。1978年与布莱恩·科尔尼干(Brian W. Kernighan)一起出版了名著《C程序设计语言(The C Programming Language)》,现在此书已翻译成多种语言,成为C语言方面最权威的教材之一。2011年10月9日,丹尼斯-里奇去世,享年70岁。
丹尼斯·里奇,全称丹尼斯·麦卡利斯泰尔·里奇。美国计算机科学家,对C语言和其他编程语言、Multics和Unix等操作系统的发展做出了巨大贡献。里奇在哈佛大学学习物理学和应用数学毕业,1967年他进入贝尔实验室,1983年他与肯·汤普逊一起获得了图灵奖。理由是他们“研究发展了通用的操作系统理论,尤其是实现了UNIX操作系统”。 肯·汤普逊和丹尼斯·里奇1999年两人为发展C语言和Unix操作系统一起获得了美国国家技术奖章。在里奇的成长历程中,有两个人对他的影响最大,一个是他父亲,而另一个是他的挚友,同为UNIX发明人的肯·汤普逊。尤其是后者。 有人问过丹尼斯,他的偶像是谁,不论在计算机领域还是其他领域?他说:我不是在英雄熏陶下成长起来的。很显然,对我职业生涯影响最大的人物是肯·汤普逊。UNIX大部分是他的工作,同样也是C语言的前辈,同样Plan 9系统的大部分工作也是他做的。并且在这其间Ken做了第一个计算机象棋大师。[39]里奇身上有很多可贵的品格:首先,他对所做的事十分有兴趣。比如创造出Unix的初衷并非为了挣钱,事实上刚开始是为了省钱,或者将他们的游戏装到一个更省钱的机子里边。第二,跳出舒适区工作非常有必要。里奇原本是一个物理学家和数学家,但是,他却成了最具传奇的程序员。很显然,他的专业背景为他研发出C语言或者Unix起了很大帮助,正如里奇所言:“要不惧工作在一个陌生的领域里。”如果里奇花了数十年的时间在晦涩的数学上,或许Unix就会胎死腹中。第三,要有创新思维。Unix在贝尔实验室是幸运的,那里资金充足、不缺员工,他才有条件与他得朋友按照自己的时间安排来研发他们想要的东西。最后,要懂得分享。现在许多企业都喜欢保密,将自己的核心技术藏匿起来,这在里奇看来都是不成功的。[40]书籍推荐
1、C程序设计语言(The C Programming Language)
2、Expert C Programming(C专家编程)
3、C Traps and Pitfalls(c陷阱与缺陷)
4、《C语言深度解剖:解开程序员面试笔试的秘密》
5、《c语言程序设计教程(第二版)》--王敬华 林萍 张清国 编著
6、《c语言详解(第六版)》-【美】Jeri R.Hanly Elliot B.Koffman 著
7、《C程序设计(第四版)》--谭浩强 著

分享到:
评论

相关推荐

    计算机程序设计语言C语音典型算法集合

    计算机程序设计语言C语音典型算法集合是为那些刚开始学c语言的初学者准备的好资料。

    计算机程序设计语言课程设计c语言

    计算机程序设计语言课程设计

    C程序设计语言(第2版_新版).rar

    《C程序设计语言》的讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。 在计算机发展的历史上,...

    计算机程序设计语言\C语言.doc

    各种计算机程序设计语言.所介绍的只有一个WORD大小,能够了解简单的语言历史,特点,未来.

    计算机C程序设计语言_第二版新版

    计算机C程序设计语言_第二版新版是计算机类必看的C语言的一本经典你书籍~和谭浩强的《C程序设计》属于同系列

    C程序设计语言(第2版-新版)非扫描版&详细书签版

    《计算机科学丛书:C程序设计语言(第2版·新版)》讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考...

    颜晖《计算机程序设计C》配套作业

    颜晖 《计算机程序设计C》 配套作业 颜晖《计算机程序设计C》配套作业

    程序设计和C语言

    1.1 什么是计算机程序 1.2 什么是计算机语言 1.3 C语言的发展及其特点 1.4 最简单的C语言程序 1.5 运行C程序的步骤与方法 1.6 程序设计的任务

    C程序设计语言(第2版·新版)习题解答.pdf

    《C程序设计语言&lt;第2版新版&gt;习题解答(原书第2版)》是对Brian W.Kernighan和Dennis M.Ritchie所著的《C程序设计语言&lt;第2版新版&gt;习题解答(原书第2版)》所有练习题的解答,是极佳的编程实战辅导书。K&R的著作是C语言...

    C程序设计语言 PDF

    # C程序设计语言(第二版) 在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用如此广泛。本书是C语言的设计者之一 DennisM.Ritchie和著名的计算机科学家BrianW.Kernighan合著的一本介绍C语言的权威经典...

    计算机程序设计(C语言)教案.doc

    计算机程序设计(C语言)教案 " "计算机 "总学时 " " "程序设计 " " " " " " " " " " " " " " "简要回 "讲解实验四 "通过讲解实 " "顾 "复习printf和scanf函数,getchar()和putchar函数的用"验四回顾顺 " " "法 "序...

    C程序设计语言

    《C程序设计语言(第2版•新版)》讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言...

    C程序设计语言(K&R)_C-C++_

    在计算机发展的历史上,没有哪一种程序设计语言像C语言这样应用广泛。本书原著即为C语言的设计者之一Dennis M.Ritchie和著名计算机科学家Brian W.Kernighan合著的一本介绍C语言的权威经典著作。我们现在见到的大量...

    《c程序设计语言》

    《C程序设计语言(第2版•新版)》讲述深入浅出,配合典型例证,通俗易懂,实用性强,适合作为大专院校计算机专业或非计算机专业的C语言教材,也可以作为从事计算机相关软硬件开发的技术人员的参考书。《C程序设计语言...

    计算机程序设计语言发展史和对程序设计语言未来的看法.docx

    计算机程序设计语言发展史和对程序设计语言未来 的看法信息科学与工程通信一班比拉力江 买买提 20104055049 【摘要】 本文以自然辩证的观点探讨了汁算机语言的发展历程,运用自然辩证法的基本 理论、基本方法,系统...

    高级语言程序设计(C语言)

    C语言既有高级语言的特性,又具有汇编语言的特点,可以作为系统程序设计语言,也可以作为应用程序设计语言。 本书以“概念加案例”的方式全面地介绍了C语言的基本概念、数据类型、程序结构;系统地讲述了C语言的结构...

    计算机程序设计的要点与规范分析-.docx

    在计算机软件编写的过程中,计算机程序设计语言是结构实现的载体与工具,数据结构怎是用来充当加工的对象,算法是程序的灵魂。计算机程序其实是通过对未知问题的分析,从而提出解决问题的方案,最终通过一系列计算机...

    C程序设计语言(K&R)清晰中文版

    《C程序设计语言》原著 即为C语言的设计者Dennis M.Ritchie和著名的计算机科学家Brian W.Kernighan合著的 一本介绍C语言的权威经典著作。我们现在见到的大量论述C语言程序设计的教材和专著均以 此书为蓝本。原著第...

    计算机程序设计基础PPT

    这是一个学习计算机C语言很好的材料,以PPT形式对知识点进行了整理和分析,绝对是个比较实用的材料,相信对学习C语言有很大帮助

Global site tag (gtag.js) - Google Analytics