导图社区 C程序设计教程
在计算机硬件的底层来看,计算机的最基本功能就是可以执行一组基本操作,每个操作完成很简单的计算工作。在此基础上,计算机系统提供了套指令,每种指令对应着计算机硬件能执行的一个基本动作。人们就可以基于指令来编排程序(program) ,程序就是一组计算机能识别和执行的指令。程序和数据可以存储在计算机上,然后根据需要把程序载入到内部存储器(简称内存) ,按照程序中的指令执行相应的操作。这称为存储程序和程序控制原理。
编辑于2023-01-14 14:14:33 四川省C程序设计教程
录 前 言..........................................................................I 第1章 程序设计和C语言..........................................................1 1.1 计算机与计算机程序.......................................................1 1.2 程序设计语言............................................................2 1.3 C语言的发展及其特点.....................................................3 1.4 C程序快速入门...........................................................4 1.5 程序开发和算法设计......................................................10 1.6 程序除错...............................................................15 本章小结....................................................................17 第2章 数据与计算..............................................................18 2.1 基本字符、标识符、关键字和语句...........................................18 2.2 数据编码与C语言基本数据类型.............................................20 2.3 常量和变量.............................................................25 2.4 数据输出...............................................................29 2.5 运算符、表达式与计算....................................................33 本章小结....................................................................41 第3章 变量和顺序结构...........................................................42 3.1 变量的概念、定义和使用..................................................42 3.2 与变量相关的运算符和表达式...............................................46 3.3 数据输入...............................................................49 3.4 数学函数及其使用........................................................56 3.5 程序调试和除错..........................................................60 本章小结....................................................................61 第4章 选择结构................................................................62 4.1 关系运算符和关系表达式..................................................62 4.2 逻辑运算符和逻辑表达式..................................................63 4.3 if语句................................................................65 4.4 条件运算符和条件表达式..................................................70 4.5 switch语句............................................................72 4.6 选择结构程序综合举例....................................................74 本章小结....................................................................76 第5章 循环结构................................................................77 5.1 while语句.............................................................77 5.2 do...while语句........................................................82 5.3 for语句...............................................................83 5.4 循环的嵌套.............................................................86 5.5 与循环有关的控制语句....................................................91 5.6 死循环.................................................................93 5.7 循环程序举例...........................................................94 本章小结....................................................................98 第6章 数组....................................................................99 6.1 一维数组...............................................................99
1.4.4 一个简单的C程序 下面是一个简单的用C语言编写的源程序(简称为C程序),帮助读者了解C程序的基本结构。 [例1-1] 写一个程序,要求它能在屏幕上输出一些字符"Hello,world!"。 下面是一个符合C语言规范、实现了题目所需功能的源程序: /*我的第一个程序:在屏幕上输出字符串*/ #include<stdio.h> intmain(){ printf("Hello,world!\n"); //屏幕输出 return0; } 这是一个完整的源程序,它的功能就是在屏幕上输出一行字符:Hello,world!。 这个示例程序展示了C语言源程序的一些基本性质。下面逐一进行介绍。 1、分行与缩进 每个C语言源程序都是由一系列字符构成的。有些文字必须单独成行,例如上面的“#include <stdio.h>”(下文将详细介绍它)。另一些文字不必单独成行,但是为了阅读方便,通常在适当的 地方插入一些换行符,拆分成多行。由于程序的许多部分表现为逻辑上的层次嵌套结构,所以通常把 代码行按照内在的逻辑结构缩进编排,通过缩进格式显示程序的逻辑结构。上面程序中,处于花括号① 内的两行向右缩进并上下对齐。这种缩进通常用一个制表符(按键盘的“Tab”键输入)或几个空格 (通常用4个)构成。 为区分程序中的不同部分,还常在程序中加入一些空行。空行不属于程序的内容。 2、注释 为了帮助自己和别人阅读、理解程序,在程序里常常写一些说明性的文字,称为注释。注释对程 序的意义(程序的执行)没有任何影响。C语言支持两种注释形式。 (1)块状注释:以组合符号“/*”开始,以“*/”结束,两者之间写注释的文字内容。上面程序 的第一行“/*我的第一个C++程序*/”就是注释。块状注释的优点是可以包含多行文字。例如,上 面程序中的注释也可以写成如下形式(添加了多个*字符并换行,看起来更整齐美观): /********************************* 我的第一个程序:在屏幕上输出字符串 **********************************/ (2)行注释:从组合符号“//”开始,直到本行末尾自动结束。例如上面程序中的“//屏幕输出” 就是一条行注释。行注释的优点是比较简洁,适用于短小的注释。 在程序中适当地方加入必要的注释是一种良好的编程习惯,有助于编程者理清自己的想法,也有 ①在数学上,括号()、[]和{}在用法上具有逐级包括的含义,常被称为小括号、中括号和大括号。但是在编程语言 里,不同括号各有特定的意义和用途,并不具有逐级包括的含义。故分别称为“圆括号”、“方括号”和“花括号”。
助于其他人的阅读和理解。在修改程序时,也可以将某些代码临时改为注释,若有必要再解除注释。 3、文件包含命令 C语言的核心功能是由一个很小的内核实现的,很多常用功能都是通过标准函数库中的函数(可以 理解为一整套现成的工具组件)来实现的。系统提供了一些头文件(扩展名为“.h”)分别说明这些 函数的特性和外部接口。要想使用这些函数,就需要在程序中包含相应的头文件。 上面程序的第二行“#include<stdio.h>”中,“#include”是一个预处理命令(在对程序进 行编译之前预先对源代码进行简单处理的命令),“stdio.h”是一个的C语言标准库头文件。这样 以预处理命令开头的代码必须单独写成单独的一行(尾部可以写行注释),称为预处理命令行。 预处理命令行“#include<stdio.h>”的含义是用预处理命令“#include”把标准库头文件 “stdio.h”包含到源程序中来(在书写格式上把标准库头文件名用一对尖括号括起来)。“stdio.h” 中说明了一批用于做输入输出(Input/Output,简称为IO)操作的函数,所以本程序中就可以使用 那些函数。 4、主函数 上面程序中的“intmain(){……}”是每个程序都需要的结构,通常称为主函数。名字main表 示主函数,前面的int表示该函数执行之后会返回一个int(普通整数)类型的值 ①。花括号里的内容 描述本程序执行时要做的工作。在上面程序中,花括号内写了用英文分号结束的两个程序行。这种以 英文分号结束的代码段称为语句,上面程序的主函数里有两条语句。 花括号内的第一条语句要求使用一个名为“printf”的标准库函数(它是在头文件“stdio.h” 中说明的),其功能是把一串字符"Hello,world!\n"输出到计算机显示器,供人查看(后文将简单 地说成“打印到屏幕”)。 用printf输出的内容是"Hello,world!\n",这是用一对英文双引号括起来的一串字符,称为 字符串。前一个英文双引号表示字符串的开始,后一个英文双引号表示字符串的终止。这两个双引号 内的字符就是字符串的内容。其中的“\n”表示一个称为换行符的字符。所输出的换行符不会明确显 示为一个字符,但将导致输出位置换一行,使随后的输出内容出现在下一行。 最后一行“return0;”是表示主函数结束的语句,这里写“0”是为了向系统报告本程序成功结 束(执行中无错误)。 每一个C程序中必须有一个且只能有一个主函数,程序执行将从主函数的第一条语句开始,到主 函数结束为止。 计算机执行上面的程序时,先执行第一条语句,输出“Hello,world!”并换一行;第二条语句 要求程序结束,并向系统报告程序成功结束。 在计算机上编辑上面的源程序并保存为一个源程序文件,然后进行编译和连接(在小龙Dev-C++ 中,相应的操作就是点击工具栏上的“编译”按钮,或者按下键盘上的F9键)。 如果编译和连接时出现错误,就会显示相应错误信息(在小龙Dev-C++中,是显示在编辑窗口下 方的“编译日志”选项卡中),需要排除错误(除错方法见本书下一节)。 编译连接成功之后,就能得到一个可执行的程序文件。运行这个可执行程序(在小龙Dev-C++中, 相应的操作就是点击工具栏上的“运行”按钮,或者按下键盘上的F10键),就能看到其执行效果。 执行该程序将产生一行输出,在Windows系统中是显示在一个命令提示符窗口(或者叫终端窗口)中: Hello,world! 关闭命令提示符窗口,可以回到集成开发环境的源代码编辑窗口中。 如果修改程序,将双引号里的字符序列换成其他内容,或者仿照着再写一些使用printf进行输出
在计算机硬件的底层来看,计算机的最基本功能就是可以执行一组基本操作,每个操作完成一件 很简单的计算工作。在此基础上,计算机系统提供了一套指令,每种指令对应着计算机硬件能执行的 一个基本动作。人们就可以基于指令来编排程序(program),程序就是一组计算机能识别和执行的 指令。程序和数据可以存储在计算机上,然后根据需要把程序载入到内部存储器(简称内存),按照 程序中的指令执行相应的操作。这称为存储程序和程序控制原理。它是计算机能够自动完成各种数值 运算和复杂的信息处理过程的基础。 人们描述和编写计算机程序的工作被称为程序设计(Programming),简称为编程。所编写出的 程序可以在计算机上运行,指挥计算机执行复杂的工作,满足人们的生产和生活需求。当今社会上正 在使用的计算机只有廖廖几种,正是数量繁多、功能丰富的程序赋予了计算机丰富的功能,从而广泛 地应用于生产和生活。因此,程序设计已经成为了当代信息社会的一项重要的工作。 附加说明:程序、软件与APP 编写好的程序在交付实践使用时,通常还需要提供配套的文档,以供用户了解程序的使用方式。 实现某种功能的程序及其配套文档合在一起称为一个软件。具有某个特定功能的软件称为应用软件 (application)),其中安装在智能手机上的应用软件通常称为APP。
1.4.3 小龙Dev-C++使用简介 Dev-C++(或写作Dev-Cpp)是一个可以在Windows系统下使用的免费开源的轻量级C/C++集成 开发环境。它集合了功能强大的源码编辑器、GCC编译器、GDB调试器和AStyle源程序格式整理器等 一组自由软件,具有完整的C/C++编辑、编译、运行和调试功能。它安装简单,使用方便,支持单文 件开发和项目开发。比较适合C/C++语言初学者在学习中使用,也适合非商业级普通开发者。 本书作者根据教学需求,在原版Dev-C++的基础上开发了一个分支版本,称为“小龙Dev-C++”。 这个分支版本有两个对初学者很有帮助的功能:(1)保存文件时可以对代码自动格式化,确保代码书 写规范;(2)编译出错信息能自动翻译为中文显示。
1.4.2 在实际程序设计过程中,需要使用计算机完成程序的编辑、加工(编译和连接)和运行等操作。 每步操作可以用一种独立软件完成。为方便编程工作,人们把编程中需要的各种软件(编辑器、编译 器、连接器、调试器以及其他工具)集成在一起构成一个用于程序开发的软件,以而可以方便快捷地 执行程序开发中的各种操作,大大提高编程工作的效率。这种软件被称为集成开发环境(Integrated DevelopmentEnvironment,IDE)。 目前微机上可用的C/C++集成开发环境有许多种,本书介绍的C语言知识和相关编程技术的内容 不依赖于具体开发系统。读者可用任何符合C和C++标准的开发系统作为编程环境。 在20世纪80年代和90年代,美国宝蓝(Borland)公司出品的集成开发环境TurboC(简称 TC)和BorlandC++(简称BC)DOS操作系统下非常流行,但随着计算机技术的发展,它们已经不再 适用在Windows操作系统下使用。 1999年美国微软(Microsoft)公司出品的VisualC++6.0也曾经是一个非常流行的C/C++。 在中国也得到了多年的广泛使用。但是它对C99支持不完整,而且在当代的Windows7/8/10/11操 作系统上还存在着兼容性问题。 在当代,美国微软公司出品的VisualStudio是国际上流行的功能强大的可用于多种高级语言 (包括C/C++)的商业级集成开发环境。它包含了微软公司开发的源代码编辑器、编译器、调试器以 及其它配套开发工具。该软件的社区(Community)版可供学习者免费下载安装和使用(网址: https://visualstudio.microsoft.com/zh-hans/vs/community/)。 除此之外,国际上还有开源免费的C/C++编译器GCC和Clang。基于这两个编译器开发了多个免 费开源的轻量级C/C++集成开发环境。例如Dev-C++(https://sf.net/projects/orwelldevcpp/)、小熊猫 C++(https://royqh1979.gitee.io/redpandacpp/)和Code::Blocks(http://www.codeblocks.org/)等。
1.4C程序快速入门
1.4.1 C程序的加工和执行 在使用C语言进行程序设计时,首先需要使用文本编辑工具,按照语言规则编写出程序的源代码, 将其保存为计算机的文件(文件扩展名通常为“*.cpp”或“*.c”),这种程序通常称作源程序,这 种文件称为源程序文件。 C语言是一种编译型的高级语言,需要用C语言系统把源程序转换成二进制形式的机器语言程序。 这个过程也称为对源程序的加工,通常分两步完成(如图1-2所示)。 第一步,由C语言系统中的编译程序(或者叫编译器)分析处理源程序文件,生成相应的机器语 言目标模块,所生成的文件称为目标文件,在Windows系统中通常以obj作为扩展名。 第二步,由C语言系统中的连接程序(或者叫连接器)把编译得到的目标模块与其他必要部分 (运行系统、函数库提供的功能模块等)拼装起来,做成可执行程序。所生成的文件称为可执行程序 文件,在Windows系统中以“exe”作为扩展名。 以后就可以在计算机中运行上述两步生成的可执行程序,计算机就能完成相关的工作了。
C源程序 (*.c,*.cpp) 编译 目标模块 (*.obj) 连接 可执行程序 (*.exe) 函数库 图1-2 C/C++源程序的加工过程 在把源程序加工转换成可执行程序的过程中,编译是最为关键的步骤。因此也常把这个加工过程 简单地称为“编译”,也常把C语言系统简单地称为“编译器”。
在计算机硬件的底层来看,计算机的最基本功能就是可以执行一组基本操作,每个操作完成一件 很简单的计算工作。在此基础上,计算机系统提供了一套指令,每种指令对应着计算机硬件能执行的 一个基本动作。人们就可以基于指令来编排程序(program),程序就是一组计算机能识别和执行的 指令。程序和数据可以存储在计算机上,然后根据需要把程序载入到内部存储器(简称内存),按照 程序中的指令执行相应的操作。这称为存储程序和程序控制原理。它是计算机能够自动完成各种数值 运算和复杂的信息处理过程的基础。 人们描述和编写计算机程序的工作被称为程序设计(Programming),简称为编程。所编写出的 程序可以在计算机上运行,指挥计算机执行复杂的工作,满足人们的生产和生活需求。当今社会上正 在使用的计算机只有廖廖几种,正是数量繁多、功能丰富的程序赋予了计算机丰富的功能,从而广泛 地应用于生产和生活。因此,程序设计已经成为了当代信息社会的一项重要的工作。 附加说明:程序、软件与APP 编写好的程序在交付实践使用时,通常还需要提供配套的文档,以供用户了解程序的使用方式。 实现某种功能的程序及其配套文档合在一起称为一个软件。具有某个特定功能的软件称为应用软件 (application)),其中安装在智能手机上的应用软件通常称为APP。
1.2程序设计语言
人们在进行程序设计时,就是描述自己希望计算机做什么操作的设想;而计算机能执行的程序必 须是用它能处理和执行的某种语言描述的,因此在人机之间需要一种进行交流的语言。用于描述计算 机能够执行的程序所用的语言称为程序设计语言(programminglanguage,或称编程语言)。 在计算机的发展历程中,人们开发和使用过很多不同类型的程序设计语言,大致可以分为三代。 (1)机器语言 在硬件层次,计算机可以直接识别和执行的是以二进制代码表示的机器指令。每 条机器指令由操作码字段和地址码字段构成,其中操作码指明了指令的操作性质及功能,地址码则给 出了操作数或操作数的地址。机器指令的集合就称为该计算机的机器语言。计算机诞生之初,人们只 能用机器语言编写程序,难读难写,工作效率低。 (2)汇编语言 在机器语言的基础上发展出了符号形式的汇编语言,它的每条指令仍然对应一条 机器语言指令,但是采用助记的符号名代替机器指令的操作码,地址码也用符号形式的名字表示。用 汇编语言编写的程序需要用专门的汇编系统加工翻译成二进制的机器语言程序,然后才能送给计算机 执行。汇编语言比机器语言更简单好记,但是仍然相当复杂,难以写出复杂的程序。 (3)高级语言 用机器语言和汇编语言编写的程序都是直接对应于计算机硬件层次,所以被称为 “低级语言”。随着计算机硬件和软件技术的发展,人们希望能在完全脱离具体计算机硬件的更高层 次上编写程序,这就促成了高级程序设计语言(High-levelProgramminglanguage,简称高级语 言)的诞生。1954年出现的FORTRAN是第一种高级语言,随后几十年中又出现很多种高级语言。高级 语言是完全符号化的,具有机器语言和汇编语言所不具备的很多高级特性,例如,用类似于人们习惯 使用的自然语言和数学语言描述基本计算,提供了作为数据存储的抽象模型,还提供了一批控制机制 用于程序的流程控制,等等。这些高级机制使编程者可以摆脱计算机硬件的具体细节,方便了复杂程 序的书写,写出的程序更容易阅读,有错误也更容易辨认和改正。 用高级语言编写程序的工作效率更高,使人们能高效地开发出很多大规模的应用系统,推动了计 算机应用的发展,从而又推动了计算机工业的发展。可以说,高级语言对于信息技术的发展起到了极 其重要的作用。在当代,绝大部分计算机程序都是用高级语言编写的,“程序设计”通常就是指使用 高级语言进行程序设计了。 显然,计算机并不能直接执行使用高级语言编写的程序。在研究和开发高级语言的过程中,人们
1.3C语言的发展及其特点
从FORTRAN语言诞生至今,人们开发出了很多种高级程序设计语言(简称高级语言或语言),其 中只有几十种语言在程序设计实践得到了比较广泛的使用。而且,随着计算机科学技术的发展,不断 涌现出新的语言,而一些老的语言被逐渐淘汰,仍在使用的语言也在不断地发展,引入新的特性。在 当代,世界上使用较广的高级语言有Java、C、C++、Python、FORTRAN、Ada等,它们有许多共同性 质,也有各自的特性,有不同的优缺点和适用场景。 本书的目标是作为一门程序设计基础课程的教材或者自学编程的教程,书中将讨论与程序设计有 关的各种基本问题,帮助读者学习程序设计的基本知识,掌握程序设计的基本技能,并学习从程序设 计的角度解决问题的思维方法。为此本书选用C语言作为工作语言,它是一种使用广泛、历久弥新的 编程语言,能较好地服务于本书的目标。而且C语言与其它语言有着比较密切的相关性,读者在学习 之后,未来也能比较容易地学习其它编程语言。 C语言是美国计算机科学家丹尼斯·里奇(DennisM.Ritchie,1941−2011)在1973年设计 的一种高级程序设计语言,用于编写Unix操作系统和相关的系统程序。C语言功能紧凑,编写出的程 序比较简洁,而且生成的机器代码质量好,程序执行效率高,因此很快被广泛接受和应用。后来,C语 言被移植到其他计算机系统上,逐渐发展成为一种通用的计算机软件编程语言。 1978年,加拿大计算机科学家布莱恩·柯尼汉(Brian.W.Kernighan)和丹尼斯·里奇合作出 版了《TheCProgrammingLanguage》(C程序设计语言)一书,书中介绍的C语言成为了C语言 的一个实用化标准,被称为“K&RC”。 后来,美国国家标准协会(ANSI)组建了一个专门委员会研究C语言的标准化,并于1989年颁 布了一个完整的C语言标准,这一标准常称为ANSIC(有时候也称为C89或C90)。 1999年,国际标准化组织(ISO)又对C语言标准进行了修订,在ANSIC的基础上进行了扩充, 增加了一些新语言特性。这个标准被称为C99。 2011年,国际标准化组织对C语言标准进行了进一步的修订和扩充,这个标准被称为C11。 在当代,所有广泛使用的编译器都支持ANSIC标准,并逐渐地支持C99和C11。本书中主要以 ANSIC标准进行介绍,同时也介绍C99和C11中的一些已经得到广泛使用的语言特性。 在C语言之后诞生的其他高级语言在不同程度上受到C语言的影响,或者借鉴了C语言的特性。
尤其是1983年左右由本贾尼·斯特劳斯特卢普(BjarneStroustrup,1950-)发明的C++语言,几 乎完全兼容C语言,并在此基础上添加了其它特性。在基础的程序设计方面,两者的结构和机制(包 括但不限于:基本数据类型、变量、运算符、表达式、语句、判断、循环、函数、指针、结构体等) 几乎完全重合。用C语言编写的程序几乎可以直接视为C++程序,相关的程序开发系统常常同时支持 这两种语言。在学习C语言的过程中有时也要接触到C++语言中的一些相关知识。习惯上把C语言和 C++语言合并在一起称为“C/C++”。 C语言的功能强大,灵活性大。在学习过程中,读者不仅要学习C语言的基本知识,掌握编写程 序解答一些常见问题的方法,还要注意避免由于C语言的灵活性而容易引起的错误。随此之外,希望 读者能够举一反三,从本书中学习到程序设计的基本思想、编程的技术和方法。 程序设计是一门理论性和实践性都很强的科学,读者不仅要掌握一些基本的理论知识,而且应该 自己动手完成尽可能多的程序练习,在实践中提高程序设计的能力。
对每一种高级语言都开发了一套处理该语言的软件,称为高级语言系统。按照语言在计算机系统中的 实现技术,高级语言大致可以分为两种类型:编译型和解释型。简单介绍如下: 对于编译型高级语言,人们首先针对具体的高级语言(例如FORTRAN、C或C++)开发出一个编译 程序(或称为编译器),该软件能把采用该高级语言编写的程序(称为源程序)转换为所用计算 机的机器语言的等价程序(称为可执行程序)。编程人员用这种语言编写出源程序之后,就把它 交给相应的编译器处理,转换得到可执行程序,以后就可以在计算机上执行这个机器语言程序。 对于解释型高级语言,人们首先针对具体的高级语言(例如BASIC、Java或Python)开发出一 个解释软件(或称为解释器),其功能就是读入相应高级语言的程序,并逐行解释为计算机可以 运行的机器语言,一步步地在计算机上执行。编程人员用这种语言编写出程序之后,就交给相应 的解释器,让它逐句解释并执行。 简单地来说,编译器和解释器其实都是把人类可读的源代码翻译成机器语言的“翻译工具”。对 源代码进行“翻译”是一个很复杂的过程,大致包括词法分析、语法分析、语义分析、性能优化、生 成可执行文件等五个步骤,期间涉及到复杂的算法和硬件架构,初学者不必深入了解其工作原理
1.1 在当代信息社会,人们在生产生活中广泛使用着台式个人计算机、笔记本计算机、平板电脑、智 能手机等电子设备。虽然它们外观各异,但是主要工作都是进行计算,都属于计算机(全称是“通用 电子数字计算机”)的范畴。 一个完整的计算机系统包括硬件系统和软件系统两大部分,并依靠硬件和软件的协同工作来完成 各种计算任务。计算机硬件系统指构成计算机的所有物理部件的总和,它们看得见、摸得着,是一些 实实在在的有形实体。计算机硬件系统采用冯·诺依曼体系结构,由运算器、控制器、存储器、输入设 备和输出设备5大部分组成,这些部件通过地址总线、数据总线、控制总线等连接在一起连成一体, 其中控制器和运算器合并在一起,称为中央处理器(CPU)。数据和信息可以在它们之间流动。计算机 硬件系统结构如图1-1所示。 输入设备 内部存储器 输出 控制器 运算器 中央处理器 输入 输入 输出 输入 输出 输出设备 外部存储器 图1-1 计算机硬件系统简图 仅由硬件构成而没有安装任何软件的计算机系统只能称为裸机,不能完成有意义的工作。只有安 装了软件的计算机系统才算是完整的,能够方便地执行人们所需的工作。 计算机系统的软件分为两大类:系统软件和应用软件。 系统软件(systemsoftware)指由计算机生产厂商为用户使用计算机而提供的各种基本软件。最 常见的系统软件有操作系统、编程语言处理系统、数据库管理系统、网络通信软件、各类服务程序和 工具软件等。 系统软件以外的软件都称为应用软件(applicationsoftware),是由专业人士或厂商为支持具 体应用领域的工作、解决实际问题而开发的软件。例如办公软件、网络浏览器、音频视频制作和播放 软件、计算机辅助设计软件、图形处理软件、压缩和解压缩软件等。计算机用户利用各种应用程序完 成自己的工作任务或满足日常生活中的需要。
录 -III- 6.2 二维数组..............................................................106 6.3 字符数组..............................................................108 本章小结...................................................................119 第7章 函数...................................................................120 7.1 函数定义..............................................................120 7.2 函数调用..............................................................122 7.3 函数原型声明..........................................................124 7.4 局部变量..............................................................126 7.5 自定义函数编程实例.....................................................129 7.6 递归函数..............................................................133 7.7 数组作为函数参数.......................................................137 7.8 外部变量与静态局部变量.................................................142 7.9 多文件开发简介.........................................................149 *7.10 C语句..............................................................154 本章小结...................................................................156 第8章 指针...................................................................157 8.1 内存与地址............................................................157 8.2 指针变量的定义和使用...................................................158 8.3 指针与数组............................................................164 8.4 字符指针与字符数组.....................................................171 8.5 指针数组与多级指针.....................................................179 8.6 指向函数的指针.........................................................184 8.7 动态存储分配..........................................................188 本章小结...................................................................191 第9章 结构体和其他............................................................192 9.1 用typedef定义新类型名.................................................192 9.2 结构体类型和结构体变量.................................................193 9.3 结构体数组............................................................197 9.4 结构体指针............................................................198 *9.5 链表.................................................................203 *9.6 共用体...............................................................205 9.7 枚举..................................................................207 本章小结...................................................................209 第10章 文件..................................................................210 10.1 文件相关概念.........................................................210 10.2 打开与关闭文件........................................................212 10.3 顺序读写数据文件......................................................215 10.4 二进制成块读写数据文件................................................228 10.5 程序开发实例.........................................................233 本章小结...................................................................236 附 录........................................................................237
第1章 程序设计和C语言