ImageVerifierCode 换一换
格式:DOCX , 页数:24 ,大小:204.61KB ,
资源ID:16935377      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/16935377.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(C语言程序设计谭浩强重点笔记Word下载.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

C语言程序设计谭浩强重点笔记Word下载.docx

1、0011:00 专业基础 2小时大学数学、大学物理、电机及拖动、电力电子技术、通信技术 11:30 休息 第一章 C语言概述1.1 C程序结构特点161、C程序的基本构件函数。2、一个函数由函数首部和函数体两部分构成。 函数首部一般包括函数类型、函数名、函数参数等。 函数体一般包括声明部分和执行部分。其中:在声明部分中定义所用到的变量;执行部分则由若干个语句组成。3、C程序只有一个main函数,且总是从main函数开始执行。4、C语言语句必须以“;”结束。5、用/* */作为注释。6、C编译器一般自顶向下顺序编译C源程序,如果被调函数定义在主调函数之后位置时,要在主调函数前,给出被调函数的原型

2、说明。以便编译器在编译被调函数的调用语句时,对调用语句进行参数检查。如果不进行原型说明,则无法通过编译检查。原型说明:类型说明 函数名(参数类型,参数类型,)7、头文件头文件包含了C语言的标准函数库的原型说明。C语言通过使用#include 预处理命令,将库函数的原型说明插入到源文件中。1.2 C程序上机步骤171、编辑源文件 .c;2、编译成目标文件.obj;3、连接将目标程序和库函数及其他目标程序连接起来,生产可执行文件,文件扩展名为.exe;4、执行。第二章 程序的灵魂算法232.1 算法241、算法指为求解某一问题而采用的具体方法和步骤。2、两类算法数值运算算法和非数值运算算法3、算法

3、的特性有穷性、确定性、有效性等4、算法描述文字描述法(如伪代码描述算法)、图形描述法(如流程图和NS流程图描述算法)。2.2 算法的三种基本结构顺序、选择、循环2.3 结构化程序设计方法421、自顶向下首先对问题进行分析,确定算法思路。2、逐步细化根据算法思路,制定原始算法流程,并不断细化流程。3、模块设计分解算法流程,将功能相对独立的部分划分为一个模块。4、结构化编码利用高级语言正确实现3种基本结构。第三章 数据类型 运算符与表达式483.1 C语言的基本元素481、符号集C语言使用的基本符号。2、标识符用来标记常量、变量、函数及文件名字的字符序列。3、关键字C程序规定的,具有特定含义、专门

4、用作语言特定成分的一类标识符。ANSI推荐的C语言关键字是32个。关键字全部应该小写。3.2 C的数据类型48数据是操作的对象,数据类型是指数据的内在表现形式。如(数据代码、存储、运算)。1、基本类型:整型、字符型、实型。2、构造类型:在基本类型的基础上,按照某种构成规则构造而成的类型。数组、结构体、共用体、枚举型。3、指针类型:用于存储地址的一类数据类型。4、空类型:编译器根据变量的数据类型,给变量分配存储单元。3.3 常量与变量481、符号常量符号常量在其作用域内不能改变,也不能被赋值。#define 符号常量(大写) 常量2、变量变量由变量名和变量值标识。数据类型 变量; 变量名实际上是

5、一个符号地址,编译连接程序时给每个变量名分配一个内存地址,当程序访问变量值时,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。3.4 基本类型1、整形数据在内存中的存放,是以补码形式存放的。2、实型数据:单精度 双精度。 在内存中以指数形势存放。 若数据超过有效位,则超过C语言规定有效位的数据将被舍去,故产生误差。3、字符型数据:用一个字节存储单元存储。即将字符的ASCII码存储到内存单元中。 用单引号括起来的一个字符。 转义字符特殊字符常量或者控制字符常量,它们都以“”开头。 Char、unsigned char区别:char用7位数表示,最大表示编码为127的字符;unsig

6、ned char用8位数表示,最大表示编码为255的字符。 字符数据与整型数据可以相互赋值。 字符数据可以以字符数据输出,也可以以整型数据形式输出。4、字符串常量:C语言中,必须是用字符数组来保存字符串常量。在内存中顺序存储。 用一对双引号括起来的字符序列。 每个字符串常量结尾以一个字符0作为结束标记。(一般由系统自动加上)。3.5 变量631、自动变量在函数体内或复合语句中定义的非静态变量称为自动变量。 C语言编译时,不对自动变量赋初值。 当程序执行到自动变量的作用域时,程序才为自动变量分配空间。当定义自动变量的函数或复合语句执行结束后,程序释放自动变量的存储空间。 自动变量保存在程序的动态

7、存储空间。2、静态局部变量在函数体内或复合语句中用static定义的变量称为静态局部变量。 C语言编译时,对静态局部变量赋初值。 静态局部变量存储在程序的静态存储空间。 静态局部变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空间。3、寄存器变量用register声明的变量。4、外部变量(全局变量)在函数的外部定义的变量。它的作用域是从定义处开始,到本程序文件的末尾结束,在此作用域内,全局变量可以为程序的各个函数引用。 C语言编译时,对全局变量赋初值。 全局变量存储在程序的静态存储空间。 全局变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空

8、间。注意:(1)当引用本源文件后面定义的全局变量或引用在其他源文件中定义的全局变量是,应在引用位置前,利用extern 声明该全局变量,以告诉编译器编译时,引用的是一个外部变量,在编译器连接时,将引用的外部变量的作用域扩展到本文件extern 声明处。(2)用static 声明的全局变量,不能被其他文件引用。(1)变量声明分为定义性声明和引用性声明。(2)一般把建立存储空间的声明称为变量定义,把不需要建立存储空间的声明成为变量声明。3.6 不同类型数据间的混合运算 不同类型数据进行混合运算时,不同类型的数据要先转换成同一类型,按照类型级别由低到高(char,shortintunsignedlo

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

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

11、dlib.h 标准函数库absacc.h 绝对地址访问reg.h 专用寄存器文件默认输出设备显示屏,默认输入设备键盘。第五章 选择结构的程序设计第六章 循环结构程序设计6.1 语句标号语句标号用于定义程序中的某个位置,用标识符表示,不能只用数字。6.2 break语句和continue语句1、break语句结束循环语句和switch语句。2、continue 结束本次循环,即忽略循环体中剩余的语句。第七章 数组1327.1 构造类型构造类型是由基本类型按照一定规则构造而成的。(如数组、结构体、共同体、枚举型)构造类型的每个分量(元素),是一个变量,它可以是一个简单类型或者构造类型。构造类型的分

12、量占用相邻的存储空间。7.2 数组1331、数组是有序数据的集合,数据元素类型相同,顺序存储,占用相邻的存储空间。2、数组数组必须先定义后引用。静态数组变量定义时编译器自动初始化数据元素为0,动态数组变量在程序执行时分配存储空间,在未被赋值初始化之前其值随机。3、C语言只能逐个引用数组元素,不能一次引用整个数组。4、数组引用是“数组名+下标”引用,数组下标均为整数。如a2。7.3 二维数组1、数组元素为数组。2、在内存中,C语言的二维数组中数组元素的存放顺序是按行存放的。3、二维数组引用是“数组名+下标+下标”。如a12。7.4 字符串字符数组1、一般用0来标识字符串结尾。0占用一个字符变量空

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

14、、strcpy(目的字符数组1名,源字符串/字符数组2名)拷贝时,将“0”一起拷贝过去。4、strcat(字符数组1名,字符串/字符数组2名)将字符串/字符数组2连接到字符数组1中。连接时,编译器去掉字符数组1的“0”。5、strcmp(字符串/字符数组1名,字符串/字符数组2名)比较字符串/字符数组1名 和字符串/字符数组2名的大小。字符串/字符数组1字符串/字符数组2,返回正数字符串/字符数组1=字符串/字符数组2,返回0字符串/字符数组1字符串/字符数组2,返回负数。第八章 函数1538.1 c程序的结构1541、一个C程序可以分为若干个函数。2、每个程序只能有一个主函数,C程序的执行从

15、main函数开始,从main函数结束。3、函数间可以互相调用,但主函数不能被调用。4、从用户角度看,函数可分为标准函数(库函数)和自定义函数。其中,编译器仅编译自定义函数,在连接时才将标准库函数的目标代码连接到程序。5、一个C源程序由一个或多个文件构成,一个源程序文件是一个编译单位。8.2 函数调用参数传递1、值传递如数值形参。此时,将实参值复制压栈,被调函数对复制到栈中的数值进行操作,不改变原来实参值。2、地址传递如数组形参(指针形参),此时,将实参数组的首地址压栈,被调函数引用实参数组的首地址,找到实参数组,对实参数组进行操作,改变实参数组值。即形参数组和实参数组共享同一单元。8.3 函数

16、变量的作用范围1、局部变量在定义局部变量的范围内有效。当局部变量重名时,有效范围小的优先。 在函数内部定义局部变量 函数的形式参数 在某个复合语句中定义的变量。2、全局变量在函数之外定义的变量。有效范围是从定义变量的位置开始到源文件结束。8.4 变量的存储类别变量的存储类别,即生存期。内存中供用户使用的存储空间包括:程序区、静态存储区、动态存储区。1、静态存储区在编译时分配空间,在程序运行完后才释放存储空间。存储静态局部变量和全局变量。 局部静态变量在编译时赋初值,在执行时可改变该值,但该存储空间一直保存到程序结束。 定义局部静态变量,如果没有赋初值,编译时会自动赋默认初值。 局部静态变量只能

17、在定义它的函数中使用。 全局变量都是静态的。 利用extern 外部变量方式表示变量的定义在别的文件中,提示编译器遇到此变量时,在其他模块中寻找其定义。而函数则是利用函数原型来声明。 用static 关键字说明一个不能在其他源文件中引用的全局变量。即静态全局变量在声明它的整个文件都是可见的,但是在文件之外是不可见的。2、动态存储区仅在在执行时分配空间,用完后释放存储空间。存放自动变量和形式参数。 寄存器变量用register关键字说明。寄存器变量对寄存器的占用是动态的。第九章 预处理命令1979.1 预编译命令作用预编译命令主要完成宏定义、文件包含、条件编译三种功能。1、宏定义指用一个指定的标

18、识符(名字)来代表一个字符串。在预编译时,将宏名替代成字符串的过程称为宏展开。如: # 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;2、文件包含指一个源文件可以将另一个源文件的全部内容包含进来。 #include “文件名”或#include 编译预处理时,将包含文件的全部内容复制到源文件中。在编译时作为一个源程序来编译。3、条件编译在预编译处理时,确

19、定编译时要编译的部分。 # ifdef 标识符程序段1# else程序段2# endif # if 表达式第十章 指针21110.1 变量的访问方式1、直接访问如:int a = 10;2、间接访问定义一个指针变量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、数组名代表数据的首地址。数组指针或

20、数组名+1,指向下一个数组元素的存储地址。声明格式:数据类型 *p ;赋值格式:p=a;或p=&a0;引用格式:*p=常量;等价于p0=常量;等价于a0=常量;等价于*a=常量; *(p+1)=常量;等价于p1=常量;等价于a1=常量;等价于*(a+1)=常量;5、数组名和指针变量虽然都可以代表数组的首地址,但是指针变量值可以改变,而数组名的值不可以改变。6、函数的指针专门用来存放函数的入口地址,当把函数的地址赋值给它时,它就指向该函数的入口地址。数据类型(*指针变量名)()如:int (*P)();p=max; 注max为定义的函数名;函数名代表该函数的入口地址。c=(*p)(a,b);等价

21、c=max(a,b);7、只能将变量已分配的地址赋值给指针变量,不能直接将整数赋值给指针变量。8、指针变量可以有null值,防止指针误作用。第十一章 结构体27011.1 结构体2701、作用将不同类型的数据组合成一个有机的整体。2、结构体的定义结构体是一种数据结构,按照某种规则定义,将若干个不同数据类型(也可相同)的数据项的组合成的一个有机整体。3、声明结构体类型的形式:struct 结构体类型名字 成员列表; 成员列表形式:类型符 成员名 如:int num;11.2 声明结构体类型变量的方法2711、先定义结构体类型:再定义结构体变量:struct结构体类型名字 结构体变量名。2、可在定

22、义结构体类型时,定义结构体类型变量。struct 结构体类型名字 成员列表结构体类型变量1,结构体类型变量2,;11.3 结构体变量引用2731、不能将一个结构体变量作为一个整体进行输入输出,只能对结构体变量成员分别赋值。2、结构体变量成员引用方式:结构体变量名.成员名3、如果结构体变量成员是另一个结构体变量,则要用若干个成员运算符,一级一级找到最低一级的成员。11.4 结构体变量初始化1、在声明变量时整体赋值。2、复制相同结构的变量赋值。3、除以上两种情况下可以对结构体类型变量整体赋值,其余情况下只能对变量成员分别赋值。11.5 结构体数组2751、结构体数组在内存中连续存放。2、声明方式:

23、与定义结构体变量方法相同。见11.2,只是在变量名后+n。也可在定义结构体数组时直接初始化结构体数组,此时可采用+的形式。3、初始化方式:同定义结构体变量方法。11.6 结构体类型指针结构体类型指针是指指向结构体变量所占据的内存的起始位置的指针。声明形式:struct 结构体类型名 *指针名。struct student *p;赋值形式:指针名=&结构体变量 。p=&studengt1;引用形式:(*P).成员名 或 p-成员名。*p表示指针p指向的结构体变量。1、定义的结构体类型,和声明结构体变量时不分配空间。2、结构体可以嵌套定义。3、结构体成员名可以与变量名相同。11.7 链表2831、

24、单项链表结构:链表有一个头指针和表尾null指针。每个结点包含实际数据和下一个结点的地址。2、可以用结构体类型指针,将多个结构体变量链接起来形成结构体链表。11.8 共用体 2971、共用体指将几种不同类型的变量存储在同一段内存单元中。2、共用体变量的存储单元大小等于最长成员变量所占内存的长度3、共用体变量中起作用的是最后一次存放成员。4、共用体类型声明方式:union 公用体类型名称 成员变量列表;5、共用体变量声明方式:(1)union 公用体类型名称 成员列表共用体变量;(2)先声明共用体类型,然后声明共用体变量,union 公用体类型名称 共用体变量。11.9 枚举类型3011、枚举类

25、型指将变量的值一一列举出来,变量的值只限于列举出来的值的范围内的一个。2、声明枚举类型:enum 枚举类型名称 枚举常量列表;3、声明枚举变量:enum 枚举类型名称 枚举类型变量;11.10 用typedef定义的类型3041、typedef 的作用可以用typedef声明新的类型名来代替已有的类型名。typedef 类型名称 新的类型名称。第十二章 位运算30812.1 位段 3151、位段是一种特殊的数据结构,它允许定义一个由位组成段,并可为它赋以一个名字。位段一般作为结构体的成员。2、声明方法: 位段结构类型声明方法:struct 结构体类型名称 位段成员列表; 位段结构成员(即位段变

26、量)声明方法:unsigned int 位段变量 : n; struct packed_struct unsigned int f1 :1; unsigned int f2 : unsigned int f3 : unsigned int type :4; unsigned int index :9;3、位段结构类型变量声明方法:同结构体。4、同一位段必须存储在同一个存储单元中,不能跨两个单元。第十三章 文件31913.1 文件3191、文件指存储在外部介质上的数据集合(数据文件),操作系统以文件为单位对数据进行管理。13.2 文件的分类3191、从用户的观点看: 特殊文件指标准输入输出文件或

27、标准设备文件。 普通文件指磁盘文件。2、从操作系统的角度看:每一个与主机相关联的输入输出设备都可看作一个文件。(1)根据文件的组织形式分为:顺序存取文件 和 随机存取文件。(2)根据文件的存储形式分为:ASCII文件 和 二进制文件。13.3 C语言对文件的处理方法319C语言中对文件的存取是以字符(字节)为单位的,一个输入输出流就是一个字节流或二进制流。文件的存储方式分为缓冲文件系统和非缓冲文件系统。区别是缓冲文件系统是系统自动开辟缓冲区,非缓冲文件系统是由程序为每个文件设定缓冲区。ANSI C标准只采用 缓冲文件系统 来处理文件。13.4 文件结构体类型321缓冲文件系统中,每个被使用的文

28、件都在内存中开辟一个FILE结构体类型的区,用来存放文件的有关信息(文件名字、文件状态、当前位置、缓冲区等有关信息),FILE结构体类型原型: typedef struct short level; *缓冲区“满”或“空”的程度* unsigned flags; *文件状态标志* char fd; *文件描述符* unsigned char hold; *如无缓冲区不读取字符* short bsize; *缓冲区的大小* unsigned char *buffer; / *数据缓冲区的位置*/ unsigned char *curp; /*指针,当前的指向*/ unsigned istemp; /*临时文件,指示器*/ short token;/*用于有效性检查*/FILE;13.5 文件结构体数组和指针321FILE *fp声明了一个指向FILE类型结构体的指针变量。FILE

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1