《《C程序设计》知识点(共21页).doc》由会员分享,可在线阅读,更多相关《《C程序设计》知识点(共21页).doc(21页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、精选优质文档-倾情为你奉上C程序设计知识点第1章 C语言概述1.1. C语言属高级语言,区分字母的大小写,以函数为基本单位采用模块化程序设计,可直接访问内存,进而对硬件进行操作。1.2. 用C语言编写和程序称作C源程序,简称C程序,C程序可由若干个文本文件组成,文件扩展名为C(使用C+编译器时默认扩展名为CPP)。C源程序经编译、连接后得到扩展名为EXE的可执行文件(目标程序)。 预处理 编译、连接 执行若干个C程序文件-C程序-目标程序文件-1.3. C程序从主函数开始执行,每个C程序有且仅有一个主函数,因此,每个C程序文件中至多有一个主函数。1.4. C语句以分号结尾,用括起来的一组语句称
2、作复合语句,复合语句可省略花括号之后的分号。1.5. 允许一行内写多个C语句,也允许一个C语句占用多行,但保留字和标识符不可拆行。1.6. 在C集成环境VC+ 6.0中,新建工程、保存当前程序文件、编译当前程序、执行当前程序的快捷键依次为:Ctrl+N、Ctrl+S、F7、Ctrl+F5。第2章 程序设计的灵魂算法2.1. 解决问题的方法和步骤称作算法。算法和数据结构是程序的两个主要要素。2.2. 算法具有确定性、有穷性、有效性等特点。2.3. 算法可用自然语言、流程图、N-S图、计算机语言、伪代码等描述。伪代码是用介于自然语言和计算机语言之间的文字和符号来描述算法。起止框输入输出框判断框处理
3、框注释框 连接点 流程线 有向线段或折线图2.1 ANSI流程图符号2.4. 算法的基本结构分为:顺序结构、选择结构、循环结构。-Y条件 N条件 N Y 条件Y- N 图2.2 顺序结构 图2.3 选择结构 图2.4 当循环 图2.5 当循环条件条件循环体 YN循环体条件 图2.6 顺序结构 图2.7 选择结构 图2.8 当循环 图2.9 当循环2.5. 由三种基本结构组成的程序称作结构化程序,结构化程序中的每个模块只有一个入口和一个出口。结构化程序设计通常采用“自顶向下、逐步细化”的设计方法。第3章 数据类型、运算符与表达式3.1. C的数据类型如下所示:表3.1 C语言的数据类型数据类型字
4、节数数值范围基本类型整型无符号短整型(unsigned short int)20216-1有符号短整型(signed short int)2-215215-1无符号长整型(unsigned long int)40232-1有符号长整型(signed long int)4-231231-1实型单精度实型(float)4长37位,6位有效双精度实型(double)8长307位,15位有效长双精度实型(long double)10长4931位,18位有效字符型(char)1028-1空类型(void)1构造类型枚举类型2指针类型2数组类型结构体类型共用体类型3.2. C符号常量名、变量名、函数名等统
5、称标识符,标识符的命名规则为:以字母或下划线开头,由字母、数字、下划线组成,超出32个字符部分被忽略(最好不超过8个字符)。3.3. 以0开头的整数为八进制整数,以0X或0x开头的整数为十六进制无符号整数。3.4. -3276832767为int型,0U65535U为unsigned型,65536UU和0ULUL为unsigned long型,-32769、32768和-LL为long型。后缀U和L不区分大小写和次序。3.5. 数据的存储字节数可用运算符sizeof()查询,括号内可是数据、表达式或类型名。3.6. 有符号整数(int和long)按补码存储,因此,-65535U-1U与1U65
6、535U依次相等,-UL-1UL与1ULUL依次相等。3.7. 定点数(含小数点数)和浮点数统称C实型常量,浮点数的一般形式为:尾数e除码 或 尾数E除码其含义为:尾数10除码其中,尾数为定点数或整数,除码为整数。标准浮点数的小数点在第1位非0数字之后。后缀L或l的实型常量为长双精度,无后缀实型常量为双精度。3.8. 用一对单引号括起来的单个字符称作C字符常量,其值为该字符的ASCII码(1字节无符号整数)。3.9. 转义字符n、t、分别表示回车符、制表符、反斜杠、单引号、双引号。3.10. 转义字符整数、x整数(或X整数)中的整数分别为八进制、十六进制,表示以此整数为ASCII码的字符。3.
7、11. 用双引号括起来的一串字符称作C字符串型常量,串中字符数称作串长,可以为0。字符串的存储形式为:依次存储字符串中字符的ASCII码,并追加一个空字符0(1字节无符号整数0)。3.12. 字符型、整型、实型数据统称数值型数据,不同类型的数值型数据可以混合运算,低精度数据被自动强制转换为高精度数据后方参与运算。另外,字符常量为有符号短整数,两个字符型数据间的运算按有符号短整数处理。3.13. 如果将数值型数据赋给不同类型的数值型变量,则数值型数据将被自动强制转换为变量的数据类型。3.14. C允许定义变量的同时赋初值。3.15. C运算符及其优先级、结合性如附录C(教材第365页)所示。3.
8、16. 强制数据类型转换的一般形式为:(类型名)数据3.17. 自增+、自减-运算只能作用于变量,作用于右侧时,返回变量自增、自减前的值。3.18. 赋值表达式的格式为:变量=表达式 或 变量op=表达式其中,op为运算符 +、-、*、/、%、&、| 中某一个。前者将右边表达式的值赋给左边的变量,后者将左边变量的当前值与右边表达式的值作相应运算后仍赋给左边的变量。整个赋值表达式取左边变量所赋的新值。3.19. 用逗号分隔的一组表达式称作逗号表达式,其一般形式为:表达式, 表达式, , 表达式其功能为:从左至右依次计算各表达式的值,并以最后一个表达式的值为整个逗号表达式的值。3.20. 将数学式
9、改为C表达式时应注意:(1) 乘号*不可省略;(2) 正确改写脚码、运算符、括号等;(3) 正确书写函数名;(4) 把握好运算优先级,分数线改为/时,分子、分母相应加括号;(5) 正确拆分不等式组;(6) 区分整数除法和实数除法。第4章 顺序结构程序设计4.1. 表达式后缀分号称作表达式语句,即,表达式;4.2. putchar、getchar、printf、scanf等输入输出函数的原型在头文件stdio.h中。4.3. 函数putchar和getchar的格式和功能如下:(1) putchar格式:putchar(表达式)功能:向标准输出设备输出以指定表达式的值为ASCII码的字符,并以该
10、值为函数值(自动强制转换为int型)。(2) getchar格式:getchar()功能:从标准输入设备输入一个字符,并以该字符为函数值。注意:getchar可提取空格及回车、Tab等部分控制字符,而且只提取输入中相应位置上的一个字符,因此,输入字符间无须分隔,否则也被视为输入字符。4.4. printf函数的格式和功能如下:格式:printf(格式控制串, 输出表列)功能:(1) 从右至左依次计算输出表列中各表达式的值;(2) 从左至右依次输出格式控制串中的字符,其中,%引导的格式控制符由输出表列中相应表达式的值所取代。输出表列是一组用逗号分隔的表达式(又称输出项,可以为0项)。格式控制串为
11、字符串型数据(可以是表达式)。其中,格式符用于控制输出表列中相应表达式的输出格式。格式符及其功能如下表所示:表4.1 printf格式字符格式符说明d或i有符号十进制短整数(不输出正号)u无符号十进制短整数o无符号八进制短整数(无前缀0)x或X无符号十六进制短整数(无前缀0x,数字的大小写与x相同)c字符s字符串f定点数(默认6位小数)。e或E浮点数(浮点数中e的大小写与格式符e的大小写相同)g或G%f和%e中输出宽度较短者(e与g的大小写相同)附加格式符说明l插在%和d、i、u、o、x、X之间,表示输出相应长整数。整数插在%和其它格式符之间,前一个整数的绝对值为输出数据的宽度,后一个整数控制
12、实际输出位数:输出整数时,指定输出位数,不足左补0,超出保留;输出实数时,指定输出小数位数,不足右补0,超出四舍五入;输出字符串时,指定输出字符数。另外,第一个整数为负时,输出数据左对齐,否则右对齐。.整数整数.整数4.5. scanf函数的格式和功能如下:格式:scanf(格式控制串, 地址表列)其中,格式控制串为字符串型数据(可以是表达式),地址表列是一组用逗号分隔的地址。功能:(1) 右至左依次计算地址表列中各表达式的值;(2) 从标准输入设备提取数据,并从左至右依次存储到所指定的存储单元。(3) 地址表列中的地址可用表达式表示,通常形式为:&变量其中&是地址运算符,它表示取其后变量的存
13、储(起始)地址。说明:(1) scanf函数格式符与printf函数的格式符的功能相似。scanf的合法格式符不区分大小写、实型格式符均等效,另外,表4.2 scanf的附加格式符说明附加格式符说明正整数指定输入数据的最大宽度(插在%与其它格式符之间)*跳过当前一个数据(插在%与其它格式符之间)*正整数跳过当前指定个字符(插在%与其它格式符之间)(2) 如果格式控制串中有非格式符,则输入数据中对应位置上必须是该字符,且被跳过,这为指定数据间分隔符提供了方便。(3) printf和scanf格式控制串中的每对%(从左至右结合)按一个普通字符%对待。第5章 选择结构程序设计5.1. C逻辑值为短整
14、数(int),真、假分别为1、0。另外,字符、数、指针作为逻辑量时,非0、非空为真(即1),0、空为假(即0)。逻辑运算如下表所示:表5.1 逻辑运算真值表左元右元!右元左元&右元左元|右元假(0)假(0)真(1)假(0)假(0)假(0)真(非0)假(0)假(0)真(1)真(非0)假(0)真(1)假(0)真(1)真(非0)真(非0)假(0)真(1)真(1)5.2. 对于形如|的逻辑式,从左至右计算的逻辑值,遇到真则提前终止。5.3. 对于形如&的逻辑式,从左至右计算的逻辑值,遇到假则提前终止。5.4. 算术、关系、逻辑运算的优先级参见附录C(教材第365页)。5.5. if语句的格式和功能如下
15、:(1) 格式一:if(条件) 语句功能:如果条件成立,方执行语句。(2) 格式二:if(条件)语句1else 语句2功能 如果条件成立,执行语句1,否则执行语句2。注意:else不可独立使用,它与其前最近一个尚未配对的if配对,为避免歧义,通常只在else中嵌套if语句。5.6. 条件表达式的格式和功能如下:格式:条件?表达式1:表达式2功能:如果条件成立,取表达式1的值,否则取表达式2的值。说明:条件表达式可以嵌套,与其前最近一个尚未配对的if配对。5.7. switch语句的格式和功能如下:格式:switch(表达式)case 常量i: 语句组idefault: 语句组n+1功能:如果表
16、达式的值等于常量i,则从语句组i开始执行,否则执行语句组n+1。说明:(1) “表达式”的值和“常量”为整型(包括字符型)。(2) switch中的每个语句组称作一个分支,为使各分支独立,通常以break、return、exit等语句结尾。另外,“default: 语句组n+1”可以缺省。5.8. break语句的格式和功能如下:格式:break;功能:结束本层switch语句或本层循环语句。说明:break语句只能用于switch语句和循环。第6章 循环结构程序设计6.1. while语句的格式和功能如下:格式:while(表达式)循环体功能:当表达式的值为真时,重复执行其后循环体。说明:循
17、环体是循环语句的内嵌语句,可以是空或复合语句(下同)。6.2. do-while语句的格式和功能如下:格式:do 循环体 while(表达式)功能:重复执行循环体,直到表达式的值为假。说明:do-while循环至少执行一次循环体。6.3. for语句的格式和功能如下:格式:for(表达式1; 表达式2; 表达式3)循环体功能:(1) 计算表达式1;(2) 当表达式2的值为真时,重复执行循环体和计算表达式3。说明:表达式1、表达式2、表达式3均可缺省,但保留分号。6.4. continue语句的格式和功能如下:格式:continue;功能:跳过循环体中其后程序段(结束本次循环)。说明:conti
18、nue语句只能用于循环。6.5. 掌握以下算法:累加、阶乘、判断素数、分解整数数字、递推数列、打印字符图形。第7章 数组7.1. 同一类型数据的序列称作数组,数组中数据用相应下标变量访问,因此,数组亦可视为由下标变量组成的序列。7.2. 定义数组语句的一般格式和功能为:格式:数据类型名 数组名第1维长度第n维长度功能:为数组分配连续内存单元,用于存储数组中的下标变量(低维优先),并将起始地址(又称基址)赋给数组名。说明:数组长度只能为整型常量或整型常量表达式。7.3. 数组的要素有:数据类型、数组名、维数及各维的长度。各维的长度必须是常量,可用常量表达式表示,其值的整数位有效截断取整。7.4.
19、 下标变量的格式为:数组名第1维下标第n维下标7.5. 下标从0开始,可用表达式表示,其值的整数位有效。下标最大值比长度小1。7.6. 下标变量的使用与普通变量相同。7.7. 定义数组的同时可对数组中的下标变量赋初值。格式:数据类型名 数组名第1维长度第n维长度=数据表功能:定义数组的同时将数据表中数据依次赋给数组中下标变量,未赋值下标变量的初值为相应数据类型的0。说明:数据表中的数据必须是常量,可用表达式表示。第1维长度可省略,如果省略,其长度由数据表和其它维长度确定存储所需的最小长度。7.8. 以字符为数据元素的数组称作字符数组,它由一组字符型下标变量组成。除赋值外,字符数组名的使用与字符
20、串变量相似。字符数组也可用字符串初始化。7.9. 标准函数库提供许多用于处理字符串的函数。表7.1 常用字符串处理函数格式功能头文件puts(串)依次输出串中字符,遇到0终止,然后换行。stdio.hgets(串)读入一行字符,依次存入所分配的内存空间,并追加0。strcat(串1, 串2)将串2复制、连接到串1的第一个0处。string.hstrcpy(串1, 串2)将串2复制到串1。strcmp(串1, 串2)比较串1和串2的大小。strlen(串)求字符串的长度。strlwr(串)将串中大写字母均转换为相应小写字母。strupr(串)将串中小写字母均转换为相应大写字母。注意:输出字符串及
21、处理字符串的函数,均忽略字符串中第一个0及其后的字符。7.10. 掌握冒泡排序。第8章 函数8.1. 自定义函数的格式为:函数值类型 函数名(带类型声明的形参表列)函数体8.2. 函数值的默认数据类型为int。8.3. 如果函数有返回值,则用return语句返回,其格式为:return 表达式; 或 return(表达式);8.4. 如果函数无返回值,即函数值类型为void,亦可用格式:return;结束本函数并返回调用者。8.5. 函数一般调用格式为:函数名(实参表列)其中,实参表列为一组逗号分隔的表达式。实参按从右至左的次序计算并传递给相应形参。8.6. 如果函数调用在其定义之前,调用前应
22、作相应声明,声明格式为:函数值类型名 函数名(形参及其类型声明表列);其中,形参可省略。8.7. 函数不可嵌套定义,但允许嵌套调用,亦可直接或间接调用自身(称作递归函数)。8.8. 递归函数的函数体的一般格式为:(B班同学不作要求)if(递归条件)语句1/*递归时,如何递归*/else 语句2/*非递归时,如何处理*/或if(!递归条件)语句1/*非递归时,如何处理*/else 语句2/*递归时,如何递归*/8.9. 形参及函数内定义的变量称作局部变量,它从定义处生效,且只在该函数内有效。因此,不同函数中的局部变量可以同名,但同名不同义。8.10. 在所有函数之外定义的变量称作全局变量,它从定
23、义处生效。8.11. 如果局部变量与全局变量同名,则同名全局变量被屏蔽。8.12. 局部变量的存储方式分为:自动(auto,默认)、静态(static)、寄存器(register)。8.13. 存储方式和数据类型是变量的两个重要属性,必须在定义变量时一并声明,关键字的排列顺序没有限制。变量的默认数据类型为int,默认存储方式为auto,但关键字auto和int不可同时缺省。8.14. auto型局部变量占用动态数据区,当函数调用结束时释放所占内存。register占用CPU中的寄存器,但寄存器不够用时,占用动态数据区。8.15. 全局变量和static型局部变量占用静态数据区,默认初值为相应数
24、据类型的0。8.16. static型局部变量的声明和初始化只执行一次。8.17. 如果全局变量被声明为static型,则其它程序文件不能使用该全局变量。否则,其它程序文件也可使用该全局变量,但使用前应作extern声明。8.18. 被声明为static型的函数,只在本程序文件中有效,不能被其它程序文件调用。否则,其它程序文件也可调用此函数,但调用前应作extern声明。8.19. 常用数学函数在头文件math.h中。掌握基本初等函数。第9章 预处理命令9.1. 预处理命令在程序编译前执行,其主要功能是“文本置换”。9.2. 不带参数宏定义的格式和功能如下:格式:#define 宏名 文本功能
25、:在预处理时,将程序中宏名用相应的文本置换。9.3. 带参数宏定义的格式和功能如下:格式:#define 宏名(形参表列) 文本功能:在预处理时,将程序中带参数的宏用相应的文本置换,且文本中的形参被相应的实参所置换。注意:形参无须且做类型声明。9.4. 终止宏定义的格式如下:格式 #undef 宏名9.5. 宏定义可以引用已有的宏,亦可重新定义所代表的文本。9.6. 预处理命令无须以分号结尾,否则分号也参与置换。9.7. #include命令的格式和功能如下:格式一:#include 文件名格式二:#include 功能:在预处理时,用指定文件置换本命令加载文件。置换后,被包含文件成为本文件的
26、一部分,其函数、全局变量等均可在本文件中直接使用,无须作extern声明。前一种格式先在当前目录中找指定文件,如果未找到,方到存放C头文件的目录中查找。后一种格式直接到存放C头文件的目录中查找指定文件。9.8. 条件编译命令的格式和功能如下:格式一:#ifdef 宏名 程序段1 #else 程序段2 #endif功能:在预处理时,如果指定的宏名已定义,则用程序段1置换本命令,否则用程序段2置换本命令。当程序段2为空时,#else可省略(下同)。格式二:#ifndef 宏名 程序段1 #else 程序段2 #endif功能:在预处理时,如果指定的宏名未定义,则用程序段1置换本命令,否则用程序段2
27、置换本命令。格式三:#if 常量表达式 程序段1 #else 程序段2 #endif功能:在预处理时,如果指定常量表达式的值为真(非0),则用程序段1置换本命令,否则用程序段2置换本命令。9.9. 注释命令在预处理时被删除,不影响源程序和目标程序。注释命令的格式如下:/*注释内容*/第10章 指针10.1. 内存的基本单位是字节,每个字节都有相应的编号,称作地址或指针。借助于指针,C语言可以直接访问内存,从而对硬件进行操作。10.2. 变量所占用内存的大小由其数据类型决定,变量所占用内存的第1个字节的地址称作该变量的地址或指针,表为:&变量名10.3. 指针所指向数据的类型称作该指针的基类型,
28、它所指向数据用*指针访问,可作为普通变量使用。10.4. 指针本身也是一种数据类型,占用2字节内存,可作为无符号整数输出和参与关系运算、逻辑运算,但指针的其它运算不同于整数运算。10.5. 指针运算可简单地分为以下五类:(1) 单目运算有六个:!、&、*、+、-、sizeof。(2) 双目运算有四种:-、关系运算、逻辑运算、赋值运算。(3) 指针与整数间的运算有三个:+、-、 。(4) 强制类型转换运算:( )。(5) 结构体成员运算:-。其中,+、-、+、-、+=、-=均以基类型数据为基本单位。10.6. 一维数组的数组名可作为指针调用,它指向数组中的第一个元素,以数组中元素的类型为基类型。
29、数组名的值不可修改,且sizeof(数组名)的值为整个数组所占内存的字节数。10.7. 对于一维数组来说,基址+i 和 &基址i均指向数组中的第i+1个元素(i=0);*(基址+i) 和 基址i均表示数组中的第i+1个元素(i=0)。10.8. n维数组可看作是以n-1维数组为元素的一维数组,数组名可看作是指向数组中的第一个n-1维数组的指针。10.9. 下标变量可作为实参,但不可作为形参,实际上,它被误认为指针。10.10. C源程序经编译后,系统为源程序中的每个函数均分配一个入口地址,称作函数指针。在C源程序中,函数指针用函数名表示,其值不可修改。以函数指针为值的变量称作函数指针变量,其定
30、义格式为:函数类型名(*函数指针变量名)( );可用下述格式代替函数名:(*函数指针)10.11. 标注表示此部分为非考试内容。 函数返回值可以是指针,定义函数的一般格式为:基类型 *函数名(形参列表)函数体10.12. 不允许将非0数直接赋给指针变量,须做强制转换。当指针变量的值为0时,称之为空指针。10.13. 以指针为元素的数组称作指针数组。10.14. 以指针为基类型的指针称作指向指针的指针,以指向指针的指针为值的变量称作指向指针的指针变量,其定义格式为:存储方式关键字 基类型名 *指向指针的指针变量名10.15. C源程序经编译、连接所得目标程序(exe文件)可作为DOS外部命令使用
31、,命令行的一般式为:路径目标程序文件名 参数1 参数2 参数n10.16. C主函数main可带两个形参,前者为int型,用于接收命令行中字符串个数,后者为字符串指针数组,用于接收命令行中各字符串。带参主函数的格式为:void main(int 形参1,char *形参2 ) 函数体其中,形参1=参数个数+1形参20=路径目标程序文件名形参2i=参数i,i=1,2,n第11章 结构体与共用体11.1. 声明结构体语句的一般格式为:struct 标识符成员表列;其中,成员表列为一组声明变量的语句,这些变量称作该结构体的成员,又称数据项、分量、域、字段等。语句结尾处的分号不可缺省,标识符可以省略,
32、如果不省略标识符,则新增一个数据类型(名):struct 标识符11.2. 定义结构体变量的一般格式为:struct 标识符 变量表列;也可在声明结构体的同时定义变量:struct 标识符成员表列变量表列;11.3. 结构体变量可在定义时赋初值,类似于数组赋初值。11.4. 结构体变量的整体使用有以下四种:(1) 赋值:结构体变量=同类型结构体变量(2) 求存储量:sizeof(结构体变量)(3) 取地址:&结构体变量(4) 初始化与数组初始化相似。11.5. 结构体中成员可作为普通变量使用,成员的访问格式为:结构体变量名.成员名 或 结构体指针-成员名11.6. 结构体中的成员名只在该结构体
33、类数据中有效,因此,不同结构体中的成员可以同名,成员名也可与普通变量同名。11.7. 结构体中的成员可以是指针,其基类型可是正在定义或尚未定义的结构体。11.8. 以同一类型结构体为元素的数组称作结构体数组,以结构体为基类型的指针称作结构体指针。结构体数组和指针的定义和使用与基本类型数组和指针相似。11.9. 共用体与结构体相似,主要区别有:(1) 定义共用体的保留字为union;(2) 同一共用体各成员的基址相同,访问成员时必须与最后所存数据的类型相同,共用体数据所占内存与其成员中所占内存最大者相同;(3) 不可初始化共用体变量。11.10. 读取共用体成员时,应按最后一次所存入成员的数据类
34、型读取。11.11. 共用体和结构体的成员可以是已存在的共用体和结构体,但不可嵌套定义。11.12. 声明枚举类型语句的一般格式和功能为:格式:enum 标识符枚举元素列表变量列表;功能:(1) 显式或隐式指定所列枚举元素所代表的整数;(2) 如果不省略标识符,则定义一个枚举类型(名):enum 标识符枚举元素表是一组用逗号分隔的标识符或整数常量赋值表达式,第一个枚举元素的默认值为0,其它枚举元素的值为前者加1。11.13. typedef语句的格式和功能为:格式:typedef 数据类型名 别名1,别名n;功能:给指定数据类型增加一组名称。11.14. typedef语句也可在声明结构体、共用体、枚举类型的同时给它增加一组名称。第13章 文件(B班不作要求)13.1. 文件是存储在外部介质(存储器)上的数据集合,每个文件均有标识符,称作文件名。13.2. C所使用的数据文件分为文本文件和二进制文件。文本文件以字符为基本单位,存储字符所对应的ASCII码,又称TXT文件或ASCII文件;二进制文件中的数据存储形式与内存中存储形式相同。13.3. 指向文件结构体的指针称作文件类型指针,简称文件指针或FILE指针,其定义格式为FILE *文件指针;13.4. 读写文件之前须用fopen打开或创建该文件,访问结束后用fclose关闭该文件。专心-专注-专业