目录

  • 1 第一章 C语言简介
    • 1.1 C语言前世今生
    • 1.2 主流开发环境介绍
    • 1.3 第一个小程序解析
    • 1.4 常见编译错误
    • 1.5 章节知识点小结
  • 2 算法基础
    • 2.1 算法-程序的灵魂
    • 2.2 算法的描述-流程图
  • 3 数据类型与运算符
    • 3.1 数据描述
    • 3.2 运算符和表达式1
    • 3.3 运算符和表达式2
    • 3.4 章节知识点小结
  • 4 顺序结构程序设计
    • 4.1 输入和输出
    • 4.2 顺序结构程序设计
    • 4.3 章节知识点小结
  • 5 选择结构程序设计
    • 5.1 关系运算符和关系表达式
    • 5.2 逻辑运算符和逻辑表达式
    • 5.3 if语句
    • 5.4 条件运算符
    • 5.5 switch语句
    • 5.6 章节知识点小结
  • 6 循环结构程序设计
    • 6.1 while循环结构
    • 6.2 do_while循环结构
    • 6.3 for循环结构
    • 6.4 循环的嵌套
    • 6.5 break语句和continue语句
    • 6.6 章节知识点小结
  • 7 数组
    • 7.1 一维数组
    • 7.2 二维数组
    • 7.3 字符数组
    • 7.4 章节知识点小结
  • 8 函数
    • 8.1 子程序设计
    • 8.2 函数定义
    • 8.3 函数的调用
    • 8.4 局部变量和全局变量
    • 8.5 参数传递
    • 8.6 函数递归调用
    • 8.7 章节知识点小结
  • 9 指针
    • 9.1 指针的基本概念
    • 9.2 指针变量的定义及引用
    • 9.3 通过指针引用数组元素
    • 9.4 指向多维数组的指针和指针变量
    • 9.5 用指向数组的指针作函数参数
    • 9.6 指针与字符串
    • 9.7 函数指针和指针函数
    • 9.8 章节知识点小结
  • 10 用户自己建立数据类型
    • 10.1 定义和使用结构体变量
    • 10.2 使用结构体数组
    • 10.3 结构体指针
    • 10.4 章节知识点小结
  • 11 编译预处理
    • 11.1 宏定义预处理
    • 11.2 文件包含预处理
    • 11.3 条件编译预处理
    • 11.4 章节知识点小结
  • 12 文件
    • 12.1 文件的基本知识
    • 12.2 文件的基本操作
    • 12.3 章节知识点小结
C语言前世今生

一、引入

C语言是国际上广泛使用的一门高级程序设计语言,具有简洁、高效、灵活、可移植性强等优点,本节课主要讲解C语言的发展历程和特点,分析C语言程序的结构,让大家对C语言有了概念性的认识。

二、编程概述

计算机只能识别01两个数,也就是高、低电平,因此最初人们编写的程序就是由01组成的数串,这种程序能够被机器直接识别。

后来,为了简化程序的编写,人们使用字符代替常用的二进制指令,汇编语言由此而生。汇编语言仍然是机器语言,只是改变了表现形式,汇编程序仍依赖于计算机硬件,其可读性和可移植性都很差,汇编语言也被称为“低级语言”。

由于汇编语言的可读性难以满足人们的要求,因此,人们又创造了BASICPASCALFORTRAN等高级语言。这些语言封装了编程语言,以人类的日常语言为基础,使用一般人易于接受的文字来表示,从而使程序编写更容易,亦有较高的可读性(此处可有举例)。但这些语言不能直接操控底层的硬件。

C语言也是一种高级语言,但它同时具有低级语言的一些优势,包括一些底层的硬件操作,因此它也被称为“中级语言”。

三、C 语言的诞生与发展

(1)1960年出现了ALGOL 60。

(2)1963年,剑桥大学将ALGOL 60语言发展成为CPL(CombinedProgramming Language)语言。 

(3)1967年,剑桥大学的马丁•理查兹(MatinRichards)对CPL语言进行了简化,于是产生了BCPL语言。 

(4)1970年,美国贝尔实验室的肯•汤普森(Ken Thompson)将BCPL进行了修改,并将其命名为B语言,同时他用B语言写了第一个UNIX操作系统。 

(5)1973年,美国贝尔实验室的丹尼斯•里奇(DennisM.Ritchie)在B语言的基础上设计出了一种新的语言,他取了BCPL的第二个字母作为这种语言的名字,即C语言。 

(6)1978年,布赖恩•凯尼汉(BrianW.Kernighan)和丹尼斯•里奇(Dennis M.Ritchie)出版了第一版《The C  Programming Language》,从而使C语言成为目前世界上流传最广泛的高级程序设计语言。


图一:早期C、UNIX和相关硬件系统——引自《C专家编程》

  第一个C语言标准:1978年,Brian W. Kernighan和Dennis M. Ritchie合著了《The C Programming Language》(第1版),通常称之为K&R C或经典C;

  C89和C90标准:1983年,美国国家标准协会组成了一个委员会(X3J11),制定了第一个C标准草案(ANSIC83)。1989年,ANSI公布了一个完整的C语言标准——ANSI X3.159-1989,这个版本的语言经常被称作ANSI C或C 89。 在1990年,ANSI C标准(带有一些小改动)被美国国家标准协会采纳为ISO/IEC9899:1990,这个版本有时候称为ISO C或者C90。因此,C89和C90基本上是相同的;

C99:1995年,ISO对C90做了一些修订——1995基准增补1(ISO/IEC 9899/AMD1:1995)。1999年,ISO又对C语言标准进行修订,即ISO/IEC9899:1999。此后,2001年和2004年先后进行了两次技术修正,即2001年的TC1和2004年的TC2。ISO/IEC 9899:1999及其技术修正被称为C99。2000年3月,ANSI 也采纳了 ISO/IEC 9899:1999 标准;


【C语言趣事】大名顶顶的C语言竟然只因一款小游戏 “Space Travel” 而意外出现。

前世

CPL语言是1963年英国剑桥大学推出(Combined Programming Langurage)的高级语言。CPL语言在ALGOL 60 的基础上接近硬件一些,但规模比较大,难以实现。1967年英国剑桥大学的 Matin Richards对CPL语言做了简化形成为BCPL语言,用来写UNIX。但是并没有多长时间,就被它强大的后代B语言(取BCPL的第一个字母)所取代。B语言是贝尔实验室的KenThompson在BCPL的基础上改进的。

著名C语言的前世今生,竟然只因一款小游戏而意外诞生

Ken Thompson

今生

突然有一天贝尔实验室的研究员Ken Thompson闲来无事,手痒难耐,于是用B语言编写了一款模拟在太阳系航行的电子游戏——Space Travel。但是游戏运行需要机器和操作系统,于是他背着老板,找到了一台没有操作系统的空闲的机器——PDP-7,并着手为PDP-7开发操作系统。同样酷爱Space Travel的Dennis M.Ritchie也为了能早点儿玩上游戏,加入了Thompson的开发项目,合作开发操作系统。而他的主要工作是改造B语言,使其更成熟。1972年,终于在B语言的基础上设计出了C语言(取BCPL的第二个字母)。

著名C语言的前世今生,竟然只因一款小游戏而意外诞生

Dennis M.Ritchie

C语言的主体完成后,Ken Thompson 和Dennis M.Ritchie就开始着手重写UNIX操作系统。此时,编程的乐趣使他们已经完全忘记了那个"Space Travel",一门心思地投入到了UNIX和C语言的开发中。C语言继续发展,在1982年,很多有识之士和美国国家标准协会为了使这个语言健康地发展下去,决定成立C标准委员会,建立C语言的标准。

【提示】

正确认识游戏,学会利用游戏来学习,来激发兴趣,不要为玩游戏而游戏

从玩游戏到编一个游戏来玩,更重要的是立场与观点的变革

四、C语言特点

1C语言简洁、紧凑,使用方便、灵活,具有丰富的运算符和数据结构。

2C语言允许直接访问物理地址,进行位操作,可以直接对硬件进行操作。

3C语言具有结构化的控制语句。

4C语言语法限制不太严格,程序设计自由度大。

5C语言编写的程序可移植性好(与汇编语言相比)。

6C语言生成目标代码质量高,程序执行效率高。