C语言程序设计谭浩强重点笔记(共30页).doc
《C语言程序设计谭浩强重点笔记(共30页).doc》由会员分享,可在线阅读,更多相关《C语言程序设计谭浩强重点笔记(共30页).doc(30页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、精选优质文档-倾情为你奉上C语言设计学习笔记早晨:06:40起床07:2008:20英语 1小时 新概念英语(单词、语法、听读背)大学英语(单词、语法、听读背)上午:08:3010:30计算机基础 2小时10:5011:30计算机科学技术导论计算机组成原理微机原理及接口技术Intel微处理器结构编程与接口深入理解计算机系统80x86汇编语言程序设计8086-8088宏汇编语言程序设计教程BIOS研发技术剖析自己动手写操作系统操作系统原理Windows操作系统原理Windows内部原理系列Windows程序内部运行原理计算机网络第五版中午:12:0002:00午休下午:02:3004:30计算机
2、应用及编程Windows用户管理指南、AD配置指南、网络专业指南、Windows即学即会教程Windows下32位汇编语言程序设计、C#编程晚上:05:3008:00锻炼、晚餐08:0009:00辅导09:0011:00专业基础 2小时大学数学、大学物理、电机及拖动、电力电子技术、通信技术11:30休息专心-专注-专业目 录第一章 C语言概述1.1 C程序结构特点161、C程序的基本构件函数。2、一个函数由函数首部和函数体两部分构成。 函数首部一般包括函数类型、函数名、函数参数等。 函数体一般包括声明部分和执行部分。其中:在声明部分中定义所用到的变量;执行部分则由若干个语句组成。3、C程序只有
3、一个main函数,且总是从main函数开始执行。4、C语言语句必须以“;”结束。5、用/* */作为注释。6、C编译器一般自顶向下顺序编译C源程序,如果被调函数定义在主调函数之后位置时,要在主调函数前,给出被调函数的原型说明。以便编译器在编译被调函数的调用语句时,对调用语句进行参数检查。如果不进行原型说明,则无法通过编译检查。原型说明:类型说明 函数名(参数类型,参数类型,)7、头文件头文件包含了C语言的标准函数库的原型说明。C语言通过使用#include 预处理命令,将库函数的原型说明插入到源文件中。1.2 C程序上机步骤171、编辑源文件 .c;2、编译成目标文件.obj;3、连接将目标程
4、序和库函数及其他目标程序连接起来,生产可执行文件,文件扩展名为.exe;4、执行。第二章 程序的灵魂算法232.1 算法241、算法指为求解某一问题而采用的具体方法和步骤。2、两类算法数值运算算法和非数值运算算法3、算法的特性有穷性、确定性、有效性等4、算法描述文字描述法(如伪代码描述算法)、图形描述法(如流程图和NS流程图描述算法)。2.2 算法的三种基本结构顺序、选择、循环2.3 结构化程序设计方法421、自顶向下首先对问题进行分析,确定算法思路。2、逐步细化根据算法思路,制定原始算法流程,并不断细化流程。3、模块设计分解算法流程,将功能相对独立的部分划分为一个模块。4、结构化编码利用高级
5、语言正确实现3种基本结构。第三章 数据类型 运算符与表达式483.1 C语言的基本元素481、符号集C语言使用的基本符号。2、标识符用来标记常量、变量、函数及文件名字的字符序列。3、关键字C程序规定的,具有特定含义、专门用作语言特定成分的一类标识符。ANSI推荐的C语言关键字是32个。关键字全部应该小写。3.2 C的数据类型48数据是操作的对象,数据类型是指数据的内在表现形式。如(数据代码、存储、运算)。1、基本类型:整型、字符型、实型。2、构造类型:在基本类型的基础上,按照某种构成规则构造而成的类型。数组、结构体、共用体、枚举型。3、指针类型:用于存储地址的一类数据类型。 4、空类型:编译器
6、根据变量的数据类型,给变量分配存储单元。3.3 常量与变量481、符号常量符号常量在其作用域内不能改变,也不能被赋值。#define 符号常量(大写) 常量2、变量变量由变量名和变量值标识。数据类型 变量; 变量名实际上是一个符号地址,编译连接程序时给每个变量名分配一个内存地址,当程序访问变量值时,实际上是通过变量名找到相应的内存地址,从其存储单元中读取数据。3.4 基本类型1、整形数据在内存中的存放,是以补码形式存放的。2、实型数据:单精度 双精度。 在内存中以指数形势存放。 若数据超过有效位,则超过C语言规定有效位的数据将被舍去,故产生误差。3、字符型数据:用一个字节存储单元存储。即将字符
7、的ASCII码存储到内存单元中。 用单引号括起来的一个字符。 转义字符特殊字符常量或者控制字符常量,它们都以“”开头。 Char、unsigned char区别:char用7位数表示,最大表示编码为127的字符;unsigned char用8位数表示,最大表示编码为255的字符。 字符数据与整型数据可以相互赋值。 字符数据可以以字符数据输出,也可以以整型数据形式输出。4、字符串常量:C语言中,必须是用字符数组来保存字符串常量。在内存中顺序存储。 用一对双引号括起来的字符序列。 每个字符串常量结尾以一个字符0作为结束标记。(一般由系统自动加上)。3.5 变量631、自动变量在函数体内或复合语句中
8、定义的非静态变量称为自动变量。 C语言编译时,不对自动变量赋初值。 当程序执行到自动变量的作用域时,程序才为自动变量分配空间。当定义自动变量的函数或复合语句执行结束后,程序释放自动变量的存储空间。 自动变量保存在程序的动态存储空间。2、静态局部变量在函数体内或复合语句中用static定义的变量称为静态局部变量。 C语言编译时,对静态局部变量赋初值。 静态局部变量存储在程序的静态存储空间。 静态局部变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空间。3、寄存器变量用register声明的变量。4、外部变量(全局变量)在函数的外部定义的变量。它的作用域是从定义处开始,到
9、本程序文件的末尾结束,在此作用域内,全局变量可以为程序的各个函数引用。 C语言编译时,对全局变量赋初值。 全局变量存储在程序的静态存储空间。 全局变量在程序的整个运行期间均占用程序的静态存储空间,直到程序退出后才释放存储空间。注意:(1)当引用本源文件后面定义的全局变量或引用在其他源文件中定义的全局变量是,应在引用位置前,利用extern 声明该全局变量,以告诉编译器编译时,引用的是一个外部变量,在编译器连接时,将引用的外部变量的作用域扩展到本文件extern 声明处。(2)用static 声明的全局变量,不能被其他文件引用。注意:(1)变量声明分为定义性声明和引用性声明。(2)一般把建立存储
10、空间的声明称为变量定义,把不需要建立存储空间的声明成为变量声明。3.6 不同类型数据间的混合运算 不同类型数据进行混合运算时,不同类型的数据要先转换成同一类型,按照类型级别由低到高(char,shortintunsignedlongdouble;floatdouble)的顺序进行转换。 强制类型转换(类型名) 表达式。强制类型转换也就是将存储数据的内存单元强制转换为另一种数据类型的单元大小。即强制将存放数据的内存单元改变。 赋值时进行类型转换:将数据复制给变量时,将会将数据强制转换为要赋值变量的类型。一般短类型转换为长类型时,进行符号扩展;长类型转换为短类型时,仅赋值低位,难以保证数据的正确性
11、。3.7 函数的调用过程(补充) C函数其实就是一个程序模块。 C函数在编译时,单独编译成一个指令模块,在函数模块开始处定义保护现场指令,将用到的CPU寄存器压入堆栈。在返回时定义了恢复现场指令,将堆栈数据恢复到CPU寄存器。 在调用函数时,一般利用堆栈传递输入参数;利用EAX传递输出参数,注意在函数调用完成后,要维持堆栈平衡,且函数返回输出参数在EAX中,在使用输出参数前,不要改变EAX的值。第四章 最简单的C程序设计顺序程序设计774.1 字符数据的输入输出1、C语言没有输入输出语句,IO操作通过调用系统函数实现。2、在程序的开头,要有:#include “stdio.h”或 #inclu
12、de ,预定义语句,用来引用头文件,在编译时将头文件中的函数原型声明添加到源文件中。stdio.h 输入输出语句string.h 字符串操作函数math.h 定义数字函数ctype.h 字符函数库intrins.h 内部函数stdlib.h 标准函数库absacc.h 绝对地址访问reg.h 专用寄存器文件默认输出设备显示屏,默认输入设备键盘。第五章 选择结构的程序设计第六章 循环结构程序设计6.1 语句标号语句标号用于定义程序中的某个位置,用标识符表示,不能只用数字。6.2 break语句和continue语句1、break语句结束循环语句和switch语句。2、continue 结束本次循
13、环,即忽略循环体中剩余的语句。第七章 数组1327.1 构造类型构造类型是由基本类型按照一定规则构造而成的。(如数组、结构体、共同体、枚举型)构造类型的每个分量(元素),是一个变量,它可以是一个简单类型或者构造类型。构造类型的分量占用相邻的存储空间。7.2 数组1331、数组是有序数据的集合,数据元素类型相同,顺序存储,占用相邻的存储空间。2、数组数组必须先定义后引用。静态数组变量定义时编译器自动初始化数据元素为0,动态数组变量在程序执行时分配存储空间,在未被赋值初始化之前其值随机。3、C语言只能逐个引用数组元素,不能一次引用整个数组。4、数组引用是“数组名+下标”引用,数组下标均为整数。如a
14、2。7.3 二维数组1、数组元素为数组。2、在内存中,C语言的二维数组中数组元素的存放顺序是按行存放的。3、二维数组引用是“数组名+下标+下标”。如a12。7.4 字符串字符数组1、一般用0来标识字符串结尾。0占用一个字符变量空间。2、用字符串赋值字符数组时,C编译器在字符串后自动加0赋给字符数字。3、字符数组可以一次引用整个字符串数组。如整个字符串(数组)的输入输出,用%s格式,且在输入字符数组时,用数组名代表数组的首地址,对于二维数组,仅仅写行下标不写列下标,也可以代表给行数组的首地址。在用%s输入输出字符串数组时,遇到0结束。7.5 字符串处理函数 #include 1、gets(字符数
15、组名)从键盘输入一个字符串(以回车结束),并返回字符数组的起始地址。如get(str)。2、puts(字符数组名/字符串)将数组中的字符串(0结尾的字符序列)输出到终端上,输完换行。如puts(str),puts(“ok”)。3、strcpy(目的字符数组1名,源字符串/字符数组2名)拷贝时,将“0”一起拷贝过去。4、strcat(字符数组1名,字符串/字符数组2名)将字符串/字符数组2连接到字符数组1中。连接时,编译器去掉字符数组1的“0”。5、strcmp(字符串/字符数组1名,字符串/字符数组2名)比较字符串/字符数组1名 和字符串/字符数组2名的大小。字符串/字符数组1字符串/字符数组
16、2,返回正数字符串/字符数组1=字符串/字符数组2,返回0字符串/字符数组1字符串/字符数组2,返回负数。第八章 函数1538.1 c程序的结构1541、一个C程序可以分为若干个函数。2、每个程序只能有一个主函数,C程序的执行从main函数开始,从main函数结束。3、函数间可以互相调用,但主函数不能被调用。4、从用户角度看,函数可分为标准函数(库函数)和自定义函数。其中,编译器仅编译自定义函数,在连接时才将标准库函数的目标代码连接到程序。5、一个C源程序由一个或多个文件构成,一个源程序文件是一个编译单位。8.2 函数调用参数传递1、值传递如数值形参。此时,将实参值复制压栈,被调函数对复制到栈
17、中的数值进行操作,不改变原来实参值。2、地址传递如数组形参(指针形参),此时,将实参数组的首地址压栈,被调函数引用实参数组的首地址,找到实参数组,对实参数组进行操作,改变实参数组值。即形参数组和实参数组共享同一单元。8.3 函数变量的作用范围1、局部变量在定义局部变量的范围内有效。当局部变量重名时,有效范围小的优先。 在函数内部定义局部变量 函数的形式参数 在某个复合语句中定义的变量。2、全局变量在函数之外定义的变量。有效范围是从定义变量的位置开始到源文件结束。8.4 变量的存储类别变量的存储类别,即生存期。内存中供用户使用的存储空间包括:程序区、静态存储区、动态存储区。1、静态存储区在编译时
18、分配空间,在程序运行完后才释放存储空间。存储静态局部变量和全局变量。 局部静态变量在编译时赋初值,在执行时可改变该值,但该存储空间一直保存到程序结束。 定义局部静态变量,如果没有赋初值,编译时会自动赋默认初值。 局部静态变量只能在定义它的函数中使用。 全局变量都是静态的。 利用extern 外部变量方式表示变量的定义在别的文件中,提示编译器遇到此变量时,在其他模块中寻找其定义。而函数则是利用函数原型来声明。 用static 关键字说明一个不能在其他源文件中引用的全局变量。即静态全局变量在声明它的整个文件都是可见的,但是在文件之外是不可见的。2、动态存储区仅在在执行时分配空间,用完后释放存储空间
19、。存放自动变量和形式参数。 寄存器变量用register关键字说明。寄存器变量对寄存器的占用是动态的。第九章 预处理命令1979.1 预编译命令作用预编译命令主要完成宏定义、文件包含、条件编译三种功能。1、宏定义指用一个指定的标识符(名字)来代表一个字符串。在预编译时,将宏名替代成字符串的过程称为宏展开。如: # define PI 3. 定义宏,# undef PI 终止宏定义的作用域。 #define V(a,b,c) a*b*c 定义带参数的宏。当宏展开时,将引用宏名语句中的实参字符串代替宏定义的形参字符串。int v =V(2,3,4)则宏展开后为:int v= 2*3*4;2、文件包
20、含指一个源文件可以将另一个源文件的全部内容包含进来。如: #include “文件名”或#include 编译预处理时,将包含文件的全部内容复制到源文件中。在编译时作为一个源程序来编译。3、条件编译在预编译处理时,确定编译时要编译的部分。如: # ifdef 标识符程序段1# else程序段2# endif # if 表达式程序段1# else程序段2# endif第十章 指针21110.1 变量的访问方式1、直接访问如:int a = 10;2、间接访问定义一个指针变量p,存放变量a的首地址,通过p访问变量a。则称指针变量p指向变量a。如:int a=10;int *p1; p=&a;b=*
21、p1; 或*p1=100;等价于a=100;10.2 指针变量1、指针变量的类型是指该变量指向的内存数据的数据类型。2、必须用引用变量的地址给指针变量赋值。3、可以给指针变量赋值空值null,防止指针变量存储随机值导致系统错误。4、数组名代表数据的首地址。数组指针或数组名+1,指向下一个数组元素的存储地址。声明格式:数据类型 *p ;赋值格式:p=a;或p=&a0;引用格式:*p=常量;等价于p0=常量;等价于a0=常量;等价于*a=常量; *(p+1)=常量;等价于p1=常量;等价于a1=常量;等价于*(a+1)=常量;5、数组名和指针变量虽然都可以代表数组的首地址,但是指针变量值可以改变,
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言程序设计 谭浩强 重点 笔记 30
限制150内