2022年C语言程序设计谭浩强重点笔记.pdf

上传人:C****o 文档编号:12788203 上传时间:2022-04-26 格式:PDF 页数:26 大小:501.39KB
返回 下载 相关 举报
2022年C语言程序设计谭浩强重点笔记.pdf_第1页
第1页 / 共26页
2022年C语言程序设计谭浩强重点笔记.pdf_第2页
第2页 / 共26页
点击查看更多>>
资源描述

《2022年C语言程序设计谭浩强重点笔记.pdf》由会员分享,可在线阅读,更多相关《2022年C语言程序设计谭浩强重点笔记.pdf(26页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、C语言程序设计谭浩强重点笔记C 语言设计学习笔记早晨 : 06:40 起床07:20 08:20 英语 1 小时新概念英语 ( 单词、语法、听读背) 大学英语 ( 单词、语法、听读背) 上午 : 08:30 10:30 计算机基础 2 小时10:50 11:30 计算机科学技术导论计算机组成原理微机原理及接口技术Intel微处理器结构编程与接口深入理解计算机系统80 x86 汇编语言程序设计8086-8088 宏汇编语言程序设计教程BIOS研发技术剖析自己动手写操作系统操作系统原理Windows操作系统原理Windows内部原理系列Windows程序内部运行原理计算机网络第五版中午 : 12:

2、00 02:00 午休下午 : 02:30 04:30 计算机应用及编程Windows 用户管理指南、AD 配置指南、网络专业指南、 Windows 即学即会教程Windows下 32 位汇编语言程序设计、C#编程晚上 : 05:30 08:00 锻炼、晚餐08:00 09:00 辅导09:00 11:00 专业基础 2 小时大学数学、大学物理、电机及拖动、电力电子技术、通信技术11:30 休息精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 1 页,共 26 页 - - - - - - - - - - C

3、语言程序设计谭浩强重点笔记目 录第一章C 语言概述 . - 1 -1、1 C 程序结构特点16 . - 1 -1、2 C 程序上机步骤17 . - 1 -第二章程序的灵魂 算法 23. - 1 -2、1 算法 24. - 1 -2、2 算法的三种基本结构. - 2 -2、3 结构化程序设计方法42. - 2 -第三章数据类型运算符与表达式48 . - 2 -3、1 C 语言的基本元素48 . - 2 -3、2 C 的数据类型48 . - 2 -3、3 常量与变量48. - 3 -3、4 基本类型 . - 3 -3、5 变量 63. - 3 -3、6 不同类型数据间的混合运算. - 4 -3、7

4、 函数的调用过程(补充 ) . - 5 -第四章最简单的 C 程序设计顺序程序设计77 . - 5 -4、1 字符数据的输入输出. - 5 -第五章选择结构的程序设计97. - 6 -第六章循环结构程序设计. - 6 -6、1 语句标号 . - 6 -6、2 break 语句与 continue 语句 . - 6 -第七章数组 132. - 6 -7、1 构造类型 . - 6 -7、2 数组 133. - 6 -7、3 二维数组 . - 6 -7、4 字符串字符数组. - 7 -7、5 字符串处理函数#include . - 7 -第八章函数 153. - 7 -8、1 c 程序的结构154.

5、 - 7 -8、2 函数调用参数传递. - 8 -8、3 函数变量的作用范围. - 8 -8、4 变量的存储类别. - 8 -第九章预处理命令197. - 9 -9、1 预编译命令作用. - 9 -第十章指针 211. - 10 -10、 1 变量的访问方式. - 10 -10、 2 指针变量 . - 10 -第十一章结构体 270. - 11 -11、1 结构体 270. - 11 -11、2 声明结构体类型变量的方法271 . - 11 -精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 2 页,共 2

6、6 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记11、3 结构体变量引用273. - 11 -11、4 结构体变量初始化. - 12 -11、5 结构体数组275. - 12 -11、6 结构体类型指针. - 12 -11、7 链表 283. - 12 -11、8 共用体297. - 13 -11、9 枚举类型 301. - 13 -11、10 用 typedef 定义的类型304 . - 13 -第十二章位运算 308. - 14 -12、 1 位段315. - 14 -第十三章文件 319. - 14 -13、 1 文件 319. - 14 -13、 2 文件的

7、分类319. - 14 -13、 3 C 语言对文件的处理方法319 . - 15 -13、 4 文件结构体类型321. - 15 -13、 5 文件结构体数组与指针321. - 15 -13、 6 文件的操作321. - 15 -13、 7 文件的定位333. - 17 -13、 8 出错检测 335. - 17 -13、 9 小结 336. - 18 -第十四章C+对 C 的扩充338. - 18 -14、 1 C+的特点 338. - 18 -14、 2 C+的输入输出339. - 19 -14、 3 C+的输出 cout. - 19 -14、 4 C+的输入cin 341. - 20

8、-14、 4 函数的重载342. - 20 -14、 5 带缺省参数的函数344. - 20 -14、 6 变量的引用类型345. - 21 -14、 7 内置函数348. - 22 -14、 8 作用域运算符349. - 23 -精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 3 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记第一章C 语言概述1、1 C 程序结构特点 16 1、C 程序的 基本构件 函数。2、一个 函数由函数首部 与函数体 两部分构成。?函数首部

9、 一般包括 函数类型、函数名、函数参数等。?函数体 一般包括 声明部分 与 执行部分 。 其中 :在声明部分 中定义 所用到的 变量 ;执行部分 则由若干个 语句 组成。3、C 程序只有一个main 函数 ,且总就是从main 函数开始执行。4、C 语言语句必须以“;”结束。5、用 /* */作为 注释 。6、C 编译器一般 自顶向下 顺序编译C 源程序 ,如果 被调函数 定义在 主调函数 之后位置时 ,要在主调函数前,给出 被调函数的 原型说明 。以便编译器在编译被调函数 的调用语句 时,对调用语句 进行 参数检查 。如果不进行原型说明,则无法通过 编译检查 。原型说明 :类型说明函数名 (

10、参数类型 ,参数类型 , ) 7、头文件 头文件 包含了 C 语言的标准函数库的原型说明。C 语言通过使用 #include 预处理命令 ,将库函数的原型说明插入到源文件中。1、2 C 程序上机步骤 17 1、编辑源文件、c; 2、编译成目标文件、obj; 3、连接将目标程序 与库函数 及其她目标程序 连接起来 ,生产可执行文件,文件扩展名为、 exe; 4、执行。第二章 程序的灵魂算法23 2、1 算法 24 1、算法指为求解某一问题而采用精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 4 页,共 26

11、 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记的具体 方法 与步骤 。2、两类算法数值运算算法 与非数值运算算法3、算法的特性有穷性 、确定性 、有效性 等4、算法描述 文字描述法 (如伪代码描述算法)、图形描述法 (如流程图与NS 流程图描述算法)。2、2 算法的三种基本结构顺序、选择、循环2、3 结构化程序设计方法42 1、自顶向下首先对问题进行分析,确定算法思路。2、逐步细化根据算法思路,制定原始算法流程,并不断细化流程。3、模块设计分解算法流程,将功能相对独立的部分划分为一个模块。4、结构化编码利用高级语言正确实现3 种基本结构。第三章 数据类型运算符与表达

12、式48 3、1 C 语言的基本元素 48 1、符号集 C 语言使用的基本符号。2、标识符 用来标记常量、变量、函数及文件名字的字符序列。3、关键字 C 程序规定的 ,具有特定含义、专门用作语言特定成分的一类标识符。 ANSI 推荐的 C 语言关键字就是32 个。关键字全部应该小写。3、2 C 的数据类型 48 数据就是操作的对象,数据类型就是指数据的内在表现形式。如 (数据代码、存储、运算 )。1、基本类型 :整型、字符型、实型。2、构造类型 :在基本类型的基础上,按照某种 构成规则 构造而成 的类型。 数组、结构体、共用体、枚举型。3、指针类型 :用于存储地址的一类数据类型。4、空类型 :

13、编译器根据变量的数据类型,给变量分配存储单元。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 5 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记3、3 常量与变量 48 1、符号常量符号常量在其作用域内不能改变,也不能被赋值。#define 符号常量 (大写 ) 常量2、变量变量由变量名 与变量值 标识。数据类型变量 ; ?变量名实际上就是一个符号地址 ,编译连接程序时给每个变量名 分配一个 内存地址 ,当程序访问变量值时,实际上就是 通过变量名找到相应的内存地址,

14、从其存储单元中读取数据。3、4 基本类型1、整形数据 在内存中的存放,就是以 补码形式 存放的。2、实型数据 :单精度双精度。?在内存中以指数形势存放。?若数据超过有效位,则超过 C 语言规定有效位的数据将被舍去,故产生误差。3、字符型数据 :用一个字节存储单元存储。即将字符的 ASCII 码存储到内存单元中。?用单引号括起来的一个字符。?转义字符特殊字符常量 或者 控制字符常量 ,它们都以“”开头。?Char、 unsigned char 区别 :char 用 7 位数表示 ,最大表示编码为127 的字符;unsigned char 用 8 位数表示 ,最大表示编码为255 的字符。?字符数

15、据与整型数据可以相互赋值。?字符数据可以以字符数据输出,也可以以整型数据形式输出。4、字符串常量 :C 语言中 ,必须就是用 字符数组 来保存字符串常量。在内存中顺序存储 。?用一对双引号括起来的字符序列。?每个字符串常量结尾以一个字符 0 作为 结束标记 。(一般由系统自动加上)。3、5 变量 63 1、自动变量 在函数体内或复合语句中定义的非静态变量称为自动变量 。?C 语言编译时 ,不对自动变量赋初值。?当程序执行到自动变量的作用域时,程序才为自动变量分配空间。当定义自动精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - -

16、 - - - -第 6 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记变量的函数或复合语句执行结束后,程序释放自动变量的存储空间。?自动变量保存在程序的动态存储空间 。2、静态局部变量在函数体内或复合语句中用static 定义的变量称为静态局部变量 。?C 语言编译时 ,对静态局部变量赋初值。?静态局部变量存储在程序的 静态存储空间 。?静态局部变量在程序的 整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空间。3、寄存器变量 用 register 声明的变量。4、外部变量 (全局变量 )在函数的外部定义的变量。它的作用域就是从定义处开始

17、,到本程序文件的末尾结束,在此作用域内 ,全局变量可以为程序的各个函数引用。?C 语言编译时 ,对全局变量赋初值。?全局变量 存储在程序的静态存储空间 。?全局变量 在程序的 整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空间。注意 : (1)当引用本源文件后面定义的全局变量或引用在其她源文件中定义的全局变量就是 ,应在引用位置前,利用extern 声明该全局变量,以告诉编译器编译时,引用的就是一个 外部变量 ,在编译器连接时,将引用的 外部变量的作用域扩展到本文件extern 声明处。(2)用 static 声明的全局变量,不能被其她文件引用。注意 : (1)变量声明 分为

18、定义性声明 与 引用性声明 。(2)一般把建立存储空间的声明称为变量定义 ,把不需要建立存储空间的声明成为变量声明。3、6 不同类型数据间的混合运算?不同类型数据进行混合运算时 ,不同类型的数据要先转换成 同一类型 ,按照类型级别由低到高(char,shortint unsigned longdouble;float double)的顺序进行转换。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 7 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记?强制类型转换 (类型

19、名 ) 表达式 。强制类型转换也就就是将存储数据的内存单元 强制转换为另一种数据类型的单元大小。即强制将存放数据的内存单元改变。?赋值时进行类型转换:将数据复制给变量时,将会将数据强制转换为要赋值变量的类型。 一般短类型转换为长类型时,进行 符号扩展 ;长类型转换为短类型时,仅赋值低位 ,难以保证数据的正确性。3、7 函数的调用过程 (补充) ?C 函数其实就就是一个程序模块。?C 函数在编译时,单独编译成一个指令模块,在函数模块开始处定义保护现场指令 ,将用到的CPU 寄存器压入堆栈。在返回时定义了恢复现场指令,将堆栈数据恢复到CPU 寄存器。?在调用函数时,一般利用 堆栈传递输入参数;利用

20、EAX传递输出参数,注意在函数调用完成后,要维持 堆栈平衡 ,且函数返回输出参数在EAX中,在使用输出参数前 ,不要改变EAX 的值。第四章 最简单的 C 程序设计顺序程序设计77 4、1 字符数据的输入输出1、C 语言没有输入输出语句,IO 操作通过调用系统函数实现。2、在程序的开头,要有 :#include “stdio、h”或#include ,预定义语句 ,用来引用头文件,在编译时将头文件中的函数原型声明 添加到源文件中。stdio、h 输入输出语句string、h 字符串操作函数math、h 定义数字函数ctype、h 字符函数库intrins 、h 内部函数stdlib、h 标准函

21、数库absacc、h 绝对地址访问reg、h 专用寄存器文件默认输出设备显示屏,默认输入设备键盘。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 8 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记第五章 选择结构的程序设计第六章 循环结构程序设计6、1 语句标号语句标号 用于定义程序中的某个位置 ,用 标识符表示 ,不能只用数字。6、2 break 语句与 continue 语句1、break 语句结束循环语句与switch 语句。2、continue 结束本次循环

22、,即忽略循环体中剩余的语句。第七章 数组 132 7、1 构造类型构造类型 就是 由基本类型 按照一定规则构造而成的 。(如数组、结构体、 共同体、枚举型 ) 构造类型的每个分量(元素 ),就是一个变量,它可以就是一个简单类型或者构造类型。构造类型的分量占用相邻的存储空间。7、2 数组 133 1、数组就是有序数据 的集合 ,数据 元素类型相同,顺序存储 ,占用相邻的存储空间。2、数组数组必须先定义后引用。静态数组变量定义时编译器自动初始化数据元素为0,动态数组变量在程序执行时分配存储空间,在未被赋值初始化之前其值随机。3、C 语言只能 逐个引用数组元素,不能一次引用整个数组。4、数组引用就是

23、“数组名+下标”引用 ,数组下标均为整数。如a2。7、3 二维数组1、数组元素为数组。2、在内存中 ,C 语言的二维数组中数组元素的存放顺序就是按行存放 的。3、二维数组引用就是“数组名+下标 +下标” 。如 a12 。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 9 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记7、4 字符串字符数组1、一般用 0 来标识字符串结尾。0 占用一个字符变量空间。2、用 字符串赋值 字符数组时 ,C 编译器在字符串后自动加0 赋给字

24、符数字。3、 字符数组可以一次引用整个字符串数组。如整个字符串 (数组 )的输入输出 ,用%s格式 ,且在输入字符数组时,用 数组名代表数组的首地址,对于二维数组,仅仅写行下标不写列下标 ,也可以代表给行数组的首地址。在用 %s 输入输出字符串数组时,遇到 0 结束。7、5 字符串处理函数#include 1、gets(字符数组名 ) 从键盘输入一个字符串(以回车结束 ),并返回字符 数组的起始地址。如 get(str)。2、puts(字符数组名 /字符串 ) 将数组中的字符串(0 结尾的字符序列)输出到终端上,输完换行 。如 puts(str),puts(“ ok”)。3、strcpy(目的

25、字符数组1 名 ,源字符串 /字符数组2 名) 拷贝时 ,将“ 0”一起拷贝过去。4、strcat(字符数组1 名,字符串 /字符数组2 名) 将字符串 /字符数组2 连接到字符数组1 中。连接时 ,编译器去掉 字符数组1 的“ 0” 。5、strcmp(字符串 /字符数组 1 名,字符串 /字符数组2 名)比较字符串 /字符数组 1 名 与字符串 /字符数组2 名的大小。字符串 /字符数组1字符串 /字符数组2,返回正数字符串 /字符数组1=字符串 /字符数组2,返回 0 字符串 /字符数组1字符串 /字符数组2,返回负数。第八章 函数 153 8、1 c 程序的结构 154 1、一个 C

26、程序可以分为若干个函数。2、 每个程序只能有一个主函数,C 程序的执行从main 函数开始 ,从 main 函数结束。3、函数间可以互相调用,但主函数不能被调用。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 10 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记4、从用户角度瞧,函数可分为标准函数(库函数 )与自定义函数 。其中 ,编译器仅编译自定义函数,在连接时才将标准库函数的目标代码连接到程序。5、一个 C 源程序由一个或多个文件构成,一个源程序文件就是一个编译

27、单位。8、2 函数调用参数传递1、值传递 如 数值形参 。此时 ,将实参值 复制压栈 ,被调函数对复制到栈中的数值进行操作 ,不改变原来实参值。2、地址传递 如 数组形参 (指针形参 ),此时 ,将实参数组的首地址压栈,被调函数引用实参数组的首地址,找到实参数组,对实参数组进行操作,改变实参数组值。即形参数组与实参数组共享同一单元。8、3 函数变量的作用范围1、局部变量 在定义局部变量的范围内有效。当局部变量重名时,有效范围小的优先 。?在函数内部定义局部变量?函数的形式参数?在某个复合语句中定义的变量。2、全局变量 在函数之外定义的变量。有效范围就是从定义变量的位置开始到源文件结束。8、4

28、变量的存储类别变量的存储类别,即生存期 。内存中供用户使用的存储空间包括:程序区 、静态存储区 、动态存储区 。1、静态存储区 在编译时分配空间,在程序运行完后才释放存储空间。存储静态局部变量与全局变量。?局部静态变量在编译时赋初值,在执行时可改变该值,但该存储空间一直保存到程序结束。?定义局部静态变量,如果没有赋初值,编译时会自动赋默认初值。?局部静态变量只能在定义它的函数中使用。?全局变量都就是静态的。?利用extern 外部变量 方式表示变量的定义在别的文件中,提示 编译器 遇到此变量时 ,在其她模块中寻找其定义。而函数则就是利用函数原型来声明。精品资料 - - - 欢迎下载 - - -

29、 - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 11 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记?用 static 关键字说明一个不能在其她源文件中引用的全局变量。即静态全局变量在声明它的整个文件都就是可见的,但就是在文件之外就是不可见的。2、动态存储区 仅在在执行时分配空间,用完后释放存储空间。存放 自动变量与形式参数 。?寄存器变量 用register 关键字说明。寄存器变量对寄存器的占用就是动态的。第九章 预处理命令 197 9、1 预编译命令作用预编译命令主要完成宏定义、文件包含、条件编译三种功

30、能。1、宏定义 指用一个指定的标识符 (名字 )来代表一个 字符串 。在预编译时 ,将宏名替代成字符串的过程称为宏展开 。如 : ?# define PI 3、1415926 定义宏 , # undef PI 终止宏定义的作用域。?#define V(a,b,c) a*b*c 定义带参数的宏。 当宏展开时 ,将引用宏名语句 中的 实参字符串 代替宏定义的形参字符串。int v =V(2,3,4) 则宏展开后为 :int v= 2*3*4;精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 12 页,共 26

31、页 - - - - - - - - - - C语言程序设计谭浩强重点笔记2、文件包含 指一个源文件可以将另一个源文件的全部内容包含进来。如: ?#include “文件名”或#include ?编译预处理时,将包含文件的全部内容复制到源文件中。在编译时作为一个源程序来编译。3、条件编译 在预编译处理时,确定编译时要编译的部分。如: ?# ifdef 标识符程序段 1 # else 程序段 2 # endif ?# if 表达式程序段 1 # else 程序段 2 # endif 第十章 指针 211 10、1 变量的访问方式1、直接访问 如 :int a = 10; 2、间接访问 定义一个指针

32、变量p,存放变量a 的首地址 ,通过 p 访问变量a。则称指针变量p 指向变量a。如 :int a=10;int *p1; p=&a;b=*p1; 或*p1=100; 等价于 a=100; 10、2 指针变量1、指针变量 的类型 就是指该变量指向的内存数据 的 数据类型 。2、必须用 引用变量的地址给指针变量赋值。3、可以给指针变量赋值空值null, 防止指针变量存储随机值导致系统错误。4、数组名 代表数据的首地址。数组指针或数组名+1,指向下一个数组元素的存储地址。声明格式 :数据类型*p ; 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 -

33、 - - - - - - - - -第 13 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记赋值格式 :p=a;或 p=&a0 ; 引用格式 :*p= 常量 ;等价于 p0= 常量 ;等价于 a0= 常量 ;等价于 *a= 常量 ; *(p+1)= 常量 ;等价于 p1= 常量 ;等价于 a1= 常量 ; 等价于 *(a+1)= 常量 ; 5、数组名与指针变量虽然都可以代表数组的首地址,但就是指针变量值可以改变,而数组名的值不可以改变。6、函数的指针 专门用来存放函数的入口地址 ,当把函数的地址赋值给它时,它就指向该函数的入口地址。声明格式 :数据类型

34、(* 指针变量名 )()如:int (*P)(); 赋值格式 :p=max; 注 max 为定义的函数名;函数名代表该函数的入口地址。引用格式 :c=(*p)(a,b); 等价 c=max(a,b);7、只能将变量已分配的地址赋值给指针变量,不能直接将整数赋值给指针变量。8、指针变量可以有null 值,防止指针误作用。第十一章结构体 270 11、1 结构体 270 1、作用将不同类型的数据组合成一个有机的整体。2、结构体的定义结构体就是一种数据结构 ,按照某种规则定义,将若干个不同数据类型 (也可相同 )的数据项的组合成的一个有机整体 。3、声明结构体类型的形式:struct 结构体类型 名

35、字成员列表 ; ?成员列表形式:类型符成员名如:int num; 11、2 声明结构体类型变量的方法271 1、先定义结构体类型:struct 结构体 类型 名字成员列表;再定义结构体变量:struct 结构体 类型 名字结构体变量名。2、可在定义结构体类型时,定义结构体类型变量。struct 结构体 类型 名字成员列表结构体类型变量1,结构体类型变量2, ; 11、3 结构体变量引用 273 1、不能将一个结构体变量作为一个整体进行输入输出,只能对结构体变量成员分别赋值。2、结构体变量成员引用方式:结构体变量名、成员名精品资料 - - - 欢迎下载 - - - - - - - - - - -

36、 欢迎下载 名师归纳 - - - - - - - - - -第 14 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记3、如果结构体变量成员就是另一个结构体变量,则要用若干个成员运算符,一级一级找到最低一级的成员。11、4 结构体变量初始化1、在 声明变量 时整体赋值。2、复制 相同结构的变量赋值。3、除以上两种情况下可以对结构体类型变量整体赋值 ,其余情况下 只能对变量成员分别赋值。11、5 结构体数组 2751、结构体 数组 在内存中 连续存放 。2、声明方式 :与定义结构体变量方法相同。见 11、2,只就是在变量名后+n 。也可在定义结构体数组时直接

37、初始化结构体数组,此时可采用 +的形式。3、初始化方式:同定义结构体变量方法。11、6 结构体类型指针结构体类型指针就是指指向结构体变量 所占据的内存的起始位置 的指针。声明形式 :struct 结构体类型名* 指针名 。如:struct student *p; 赋值形式 :指针名 =& 结构体变量。如:p=&studengt1; 引用形式 :(*P) 、成员名或 p-成员名。 *p 表示指针 p 指向的结构体变量。注意 : 1、定义的结构体类型,与声明结构体变量时不分配空间 。2、结构体可以嵌套定义。3、结构体成员名可以与变量名相同。11、7 链表 283 1、单项链表结构:链表有一个 头指

38、针 与表尾 null 指针。每个结点包含实际数据 与下一个结点的地址。2、可以用结构体类型指针,将多个结构体变量链接起来形成结构体链表 。如: 精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 15 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记11、8 共用体 297 1、共用体指将几种不同类型的变量存储在同一段内存单元中。2、共用体变量的存储单元大小等于最长成员变量所占内存的长度3、共用体变量中起作用的就是最后一次存放成员。4、共用体类型声明方式:union 公用

39、体类型名称成员变量列表;5、共用体变量声明方式:(1)union 公用体类型名称成员列表共用体变量;(2)先声明共用体类型,然后声明共用体变量,union 公用体类型名称共用体变量。11、9 枚举类型 301 1、枚举类型指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内的一个。2、声明枚举类型:enum 枚举类型名称枚举常量列表; 3、声明枚举变量:enum 枚举类型名称枚举类型变量 ;11、10 用 typedef 定义的类型 304 1、typedef 的作用可以用typedef 声明新的类型名来代替已有的类型名。精品资料 - - - 欢迎下载 - - - - - - - -

40、- - - 欢迎下载 名师归纳 - - - - - - - - - -第 16 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记2、声明方式 :typedef 类型名称新的类型名称。第十二章位运算 308 12、1 位段 315 1、位段 就是一种特殊的数据结构,它允许定义一个由位组成 段,并可为它赋以一个名字。 位段一般作为结构体的成员。2、声明方法 : ?位段结构类型声明方法 :struct 结构体类型名称位段成员列表; ?位段结构成员(即位段变量 )声明方法 :unsigned int 位段变量: n; 如 : ?struct packed_stru

41、ct unsigned int f1 :1; unsigned int f2 :1; unsigned int f3 :1; unsigned int type :4; unsigned int index :9; ;3、位段结构类型变量声明方法 :同结构体。4、同一位段必须存储在同一个存储单元中,不能跨两个单元。第十三章文件 319 13、1 文件 319 1、 文件指存储在外部介质上的数据集合(数据文件 ),操作系统以文件为单位对数据进行管理。13、2 文件的分类 319 1、从用户的观点瞧: ?特殊文件 指标准输入输出文件或标准设备文件。?普通文件 指磁盘文件。2、 从操作系统的角度瞧:

42、每一个与主机相关联的输入输出设备都可瞧作一个文件。(1)根据文件的组织形式分为:顺序存取文件与 随机存取文件 。(2)根据文件的存储形式分为:ASCII 文件与 二进制文件 。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 17 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记13、3 C 语言对文件的处理方法319 C 语言中对文件的存取就是以字符(字节 )为单位的 ,一个输入输出流就就是一个字节流 或二进制流 。文件的存储方式分为 缓冲文件系统与非缓冲文件系统。区

43、别就是 缓冲文件系统 就是系统 自动开辟缓冲区,非缓冲文件系统就是由 程序 为每个文件 设定缓冲区 。ANSI C 标准只采用缓冲文件系统来处理文件。13、4 文件结构体类型321 缓冲文件系统中,每个被使用的文件都在内存中开辟一个FILE结构体类型 的区 ,用来存放文件的有关信息(文件名字、文件状态、当前位置、缓冲区等有关信息), FILE 结构体类型原型: ?typedef structshort level; *缓冲区 “ 满” 或“ 空 ” 的程度 * unsigned flags; * 文件状态标志*char fd; *文件描述符 *unsigned char hold; *如无缓冲

44、区不读取字符* short bsize; * 缓冲区的大小 * unsigned char *buffer; / * 数据缓冲区的位置*/ unsigned char *curp; /* 指针 ,当前的指向 */ unsigned istemp; /* 临时文件 ,指示器 */ short token;/* 用于有效性检查*/FILE; 13、5 文件结构体数组与指针321 FILE *fp 声明了一个指向FILE 类型结构体的指针变量。FILE f5 声明了一个文件结构体数组f,它有 5 个元素 ,存放 5 个文件的信息。FILE 变量声明了一个文件结构体变量。13、6 文件的操作 321

45、C 语言要求 ,在文件读写之前要“打开”文件,在使用结束后要“关闭”文件。1、打开文件 : ?FILE *fp; ?fpfopen(“文件名” ,“使用文件方式”);指针变量指向被打开的文件。精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 18 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记例如 :fp = fopen( “a1”,“r”)。2、关闭文件 : fclose(文件指针 );返回值 :关闭成功返回值为;否则返回EOF(-1) 。使文件指针变量不指向该文件

46、,也就就是文件指针变量与文件“ 脱钩 ” ,此后不能再通过该指针对原来与其相联系的文件进行读写操作。3、将字符写到文件中: fputc ( ch,fp ) ;返回值 :如果输出成功,则返回值就就是输出的字符;如果输出失败,则返回一个EOF(-1)。将字符 (ch 的值 )输出到文件指针fp 所指向的文件中去。该文件必须就是以写或读写方式 打开的。4、将字符从文件中读出:chfgetc(fp) ;返回值 :读取成功一个字符,赋给 c。如果遇到文件结束符,返回一个文件结束标志EOF(-1) 。从指定的文件读入一个字符,该文件必须就是以读或读写方式 打开的。注意 :ANSI C 提供一个feof()

47、函数来判断文件就是否真的结束。如果就是文件结束,函数 feof(fp) 的值为 (真 );否则为 (假)。以上也适用于文本文件的读取。5、数据块读写: ?fread (buffer,size,count,fp); ?fwrite(buffer,size,count,fp); buffer: 就是一个指针。对fread 来说 ,它就是读入数据的存放地址。对fwrite 来说 ,就是要输出数据的地址(均指起始地址)。size: 要读写的字节数。count: 要进行读写多少个size 字节的数据项。fp: 文件型指针。6、格式化读写函数: ?fprintf ( 文件指针 ,格式字符串 ,输出表列 )

48、; ?fscanf ( 文件指针 ,格式字符串 ,输入表列 ); 注意 : 用 fprintf 与 fscanf 函数对磁盘文件读写,使用方便 ,容易理解 ,但由于在输入时要将 ASCII 码转换为二进制形式,在输出时又要将二进制形式转换成字符,花费时间比精品资料 - - - 欢迎下载 - - - - - - - - - - - 欢迎下载 名师归纳 - - - - - - - - - -第 19 页,共 26 页 - - - - - - - - - - C语言程序设计谭浩强重点笔记较多。因此 ,在内存与磁盘频繁交换数据的情况下,最好不用fprintf 与 fscanf 函数 ,而用fread

49、与 fwrite 函数。7、以“字”或者整数为单位读写函数: ?putw(int i,FILE * fp); ?int i = getw(FILE * fp); 8、以“字符串”为单位读写文件的函数: ?fgets(str,n,fp); 从 fp 指向的文件读出n-1 个字符 ,在最后加一个 0 。 返回值 :str的首地址。如果遇到EOF 则读入结束。?fputs(“ china” ,fp); 把字符串写入到fp 指向的文件。第一个参数可以就是字符串常量、字符数组名或字符型指针。字符串末尾的不输出。13、7 文件的定位 333 1、将文件当前的位置指针 重新返回到 文件的开头 位置 :无返回

50、值。?rewind (fp) ;执行后 ,将文件的位置指针重新定位到文件的开头。2、随机读写 :改变文件的位置指针,一般用于二进制文件。?fseek(文件类型指针 ,位移量 ,起始点 );无返回值。起始点 :文件开头SEEK_SET 0 文件当前位置SEEK_CUR 1 文件末尾SEEK_END 2 位移量 :以起始点为基点,向后 (前,末尾时 )移动的字节数。一般要求为long 型。3、获取 流式文件 当前的位置指针:返回当前位置用相对于文件开头的位移量来表示。 ,出错时返回EOF。?i = ftell(fp); 13、8 出错检测 335 1、ferror(fp); 返回 0,表示未出错

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 高考资料

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com