《C程序设计》复习知识点总结.docx
《《C程序设计》复习知识点总结.docx》由会员分享,可在线阅读,更多相关《《C程序设计》复习知识点总结.docx(12页珍藏版)》请在冰豆网上搜索。
《C程序设计》复习知识点总结
《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语句以分号结尾,用{}括起来的一组语句称作复合语句,复合语句可省略花括号之后的分号。
1.5.允许一行内写多个C语句,也允许一个C语句占用多行,但保留字和标识符不可拆行。
1.6.掌握练习册中选择部分
第3章数据类型、运算符与表达式
3.1.C的数据类型如下所示:
表3.1C语言的数据类型
数据类型
字节数
数值范围
基本类型
整型
无符号短整型(unsignedshortint)
4
0~216-1
有符号短整型(signedshortint)
2
-215~215-1
无符号长整型(unsignedlongint)
4
0~232-1
有符号长整型(signedlongint)
4
-231~231-1
实型
单精度实型(float)
4
长37位,6位有效
双精度实型(double)
8
长307位,15位有效
长双精度实型(longdouble)
10
长4931位,18位有效
字符型(char)
1
0~28-1
空类型(void)
1
构造类型
枚举类型
2
指针类型
2
数组类型
结构体类型
共用体类型
3.2.C符号常量名、变量名、函数名等统称标识符,标识符的命名规则为:
以字母或下划线开头,由字母、数字、下划线组成,不能是关键字,超出32个字符部分被忽略(最好不超过8个字符)。
3.3.以0开头的整数为八进制整数,以0X或0x开头的整数为十六进制无符号整数。
3.4.-32768~32767为int型,0U~65535U为unsigned型,65536U~4294967295U和0UL~4294967295UL为unsignedlong型,-2147483648~-32769、32768~2147483647和-2147483648L~2147483647L为long型。
后缀U和L不区分大小写和次序。
3.5.数据的存储字节数可用运算符sizeof()查询,括号内可是数据、表达式或类型名。
其中,尾数为定点数或整数,除码为整数。
标准浮点数的小数点在第1位非0数字之后。
后缀L或l的实型常量为长双精度,无后缀实型常量为双精度。
3.6.实型常量指数形式:
1.2×10-3---------1.2e-3
例如123.456可以表示为:
123.456e0、12.3456e1、1.23456e2、…
把其中的1.23456e2称为“规范化的指数形式”:
即在字母e(或E)之前的小数部分中,小数点左边应有一位(且只能有一位)非零的数字。
3.7.用一对单引号括起来的单个字符称作C字符常量,其值为该字符的ASCII码(1字节无符号整数)。
3.8.转义字符'\n'、'\t'、'\\'、'\''、'\"'分别表示回车符、制表符、反斜杠、单引号、双引号。
3.9.转义字符'\整数'、'\x整数'(或'\X整数')中的整数分别为八进制、十六进制,表示以此整数为ASCII码的字符。
3.10.用双引号括起来的一串字符称作C字符串型常量,串中字符数称作串长,可以为0。
字符串的存储形式为:
依次存储字符串中字符的ASCII码,并追加一个空字符'\0'(1字节无符号整数0)。
3.11.字符型、整型、实型数据统称数值型数据,不同类型的数值型数据可以混合运算,低精度数据被自动强制转换为高精度数据后方参与运算。
另外,字符常量为有符号短整数,两个字符型数据间的运算按有符号短整数处理。
3.12.如果将数值型数据赋给不同类型的数值型变量,则数值型数据将被自动强制转换为变量的数据类型。
3.13.C允许定义变量的同时赋初值。
3.14.C运算符及其优先级、结合性如附录C(教材第365页)所示。
3.15.强制数据类型转换的一般形式为:
(类型名)数据
3.16.自增++、自减--运算只能作用于变量,作用于右侧时,返回变量自增、自减前的值。
3.17.赋值表达式的格式为:
变量=表达式或变量op=表达式
其中,op为运算符+、-、*、/、%、>>、<<、&、^、|中某一个。
前者将右边表达式的值赋给左边的变量,后者将左边变量的当前值与右边表达式的值作相应运算后仍赋给左边的变量。
整个赋值表达式取左边变量所赋的新值。
3.18.用逗号分隔的一组表达式称作逗号表达式,其一般形式为:
表达式,表达式,…,表达式
其功能为:
从左至右依次计算各表达式的值,并以最后一个表达式的值为整个逗号表达式的值。
3.19.将数学式改为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码的字符,并以该值为函数值(自动强制转换为int型)。
(2)getchar
格式:
getchar()
功能:
从标准输入设备输入一个字符,并以该字符为函数值。
注意:
getchar可提取空格及回车、Tab等部分控制字符,而且只提取输入中相应位置上的一个字符,因此,输入字符间无须分隔,否则也被视为输入字符。
4.4.printf函数的格式和功能如下:
格式:
printf(格式控制串,输出表列)
功能:
(1)从右至左依次计算输出表列中各表达式的值;
(2)从左至右依次输出格式控制串中的字符,其中,%引导的格式控制符由输出表列中相应表达式的值所取代。
输出表列是一组用逗号分隔的表达式(又称输出项,可以为0项)。
格式控制串为字符串型数据(可以是表达式)。
其中,格式符用于控制输出表列中相应表达式的输出格式。
格式符及其功能如下表所示:
表4.1printf格式字符
格式符
说明
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之间,表示输出相应长整数。
整数
插在%和其它格式符之间,前一个整数的绝对值为输出数据的宽度,后一个整数控制实际输出位数:
①输出整数时,指定输出位数,不足左补0,超出保留;②输出实数时,指定输出小数位数,不足右补0,超出四舍五入;③输出字符串时,指定输出字符数。
另外,第一个整数为负时,输出数据左对齐,否则右对齐。
.整数
整数.整数
4.5.scanf函数的格式和功能如下:
格式:
scanf(格式控制串,地址表列)
其中,格式控制串为字符串型数据(可以是表达式),地址表列是一组用逗号分隔的地址。
功能:
(1)地址表列中的地址可用表达式表示,通常形式为:
&变量
其中&是地址运算符,它表示取其后变量的存储(起始)地址。
第5章选择结构程序设计
5.1.C逻辑值为短整数(int),真、假分别为1、0。
另外,字符、数、指针作为逻辑量时,非0、非空为真(即1),0、空为假(即0)。
5.2.对于形如
□||□||…
的逻辑式,从左至右计算□的逻辑值,遇到真则提前终止。
5.3.对于形如
□&&□&&…
的逻辑式,从左至右计算□的逻辑值,遇到假则提前终止。
5.4.算术、关系、逻辑运算的优先级参见附录C(教材第365页)。
5.5.if语句的格式和功能如下:
(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:
语句组i
…
default:
语句组n+1
}
功能:
如果表达式的值等于常量i,则从语句组i开始执行,否则执行语句组n+1。
说明:
(1)“表达式”的值和“常量”为整型(包括字符型)。
(2)switch中的每个语句组称作一个分支,为使各分支独立,通常以break、return、exit等语句结尾。
另外,“default:
语句组n+1”可以缺省。
5.8.break语句的格式和功能如下:
格式:
break;
功能:
结束本层switch语句或本层循环语句。
说明:
break语句只能用于switch语句和循环。
没有break时,程序如何执行。
5.9.掌握循环条件的表达式写法,if嵌套,多分支实现,看课件。
第6章循环结构程序设计
6.1.while语句的格式和功能如下:
格式:
while(表达式)
循环体
功能:
当表达式的值为真时,重复执行其后循环体。
说明:
循环体是循环语句的内嵌语句,可以是空或复合语句(下同)。
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;
功能:
跳过循环体中其后程序段(结束本次循环)。
说明:
continue语句只能用于循环。
6.5.break语句功能。
6.6.掌握以下算法:
累加、累乘。
1+2+3。
。
。
。
1*2*3。
。
。
。
1!
+2!
+3!
。
。
。
1/2+1/3+1/4。
。
。
。
1/2+3/4+5/6。
。
。
第7章数组
7.1.同一类型数据的序列称作数组,数组中数据用相应下标变量访问,因此,数组亦可视为由下标变量(数组元素)组成的序列。
7.2.定义数组语句的一般格式和功能为:
格式:
数据类型名数组名[第1维长度]…[第n维长度]
功能:
为数组分配连续内存单元,用于存储数组中的下标变量(低维优先),并将起始地址(又称基址)赋给数组名。
说明:
数组长度只能为整型常量或整型常量表达式。
7.3.下标变量的格式为:
数组名[第1维下标]…[第n维下标]
7.4.下标从0开始,可用表达式表示,其值的整数位有效。
下标最大值比长度小1。
注意:
数组元素的使用与普通变量相同。
7.5.定义数组的同时可对数组中的下标变量赋初值。
格式:
数据类型名数组名[第1维长度]…[第n维长度]={数据表}
功能:
定义数组的同时将数据表中数据依次赋给数组中下标变量,未赋值下标变量的初值为相应数据类型的0。
说明:
数据表中的数据必须是常量,可用表达式表示。
第1维长度可省略,如果省略,其长度由数据表和其它维长度确定——存储所需的最小长度。
注意:
一维、二维数组初始化。
7.6.以字符为数据元素的数组称作字符数组,它由一组字符型下标变量组成。
除赋值外,字符数组名的使用与字符串变量相似。
字符数组也可用字符串初始化。
7.7.标准函数库提供许多用于处理字符串的函数。
表7.1常用字符串处理函数
格式
功能
头文件
puts(串)
依次输出串中字符,遇到'\0'终止,然后换行。
stdio.h
gets(串)
读入一行字符,依次存入所分配的内存空间,并追加'\0'。
strcat(串1,串2)
将串2复制、连接到串1的第一个'\0'处。
string.h
strcpy(串1,串2)
将串2复制到串1。
strcmp(串1,串2)
比较串1和串2的大小。
strlen(串)
求字符串的长度。
strlwr(串)
将串中大写字母均转换为相应小写字母。
strupr(串)
将串中小写字母均转换为相应大写字母。
注意:
输出字符串及处理字符串的函数,均忽略字符串中第一个'\0'及其后的字符。
7.8.掌握排序,最大小值。
数组处理与循环连用。
第8章函数
8.1.自定义函数的格式为:
函数值类型函数名(带类型声明的形参表列){函数体}
8.2.函数值的默认数据类型为int。
8.3.如果函数有返回值,则用return语句返回,其格式为:
return表达式;或return(表达式);
8.4.如果函数无返回值,即函数值类型为void,亦可用格式:
return;
结束本函数并返回调用者。
8.5.函数一般调用格式为:
函数名(实参表列)
其中,实参表列为一组逗号分隔的表达式。
实参按从右至左的次序计算并传递给相应形参。
8.6.如果函数调用在其定义之前,调用前应作相应声明,声明格式为:
函数值类型名函数名(形参及其类型声明表列);
其中,形参可省略。
8.7.函数不可嵌套定义,但允许嵌套调用,亦可直接或间接调用自身(称作递归函数)。
8.8.递归函数的函数体的一般格式为:
if(递归条件)语句1/*递归时,如何递归*/
else语句2/*非递归时,如何处理*/
或
if(!
递归条件)语句1/*非递归时,如何处理*/
else语句2/*递归时,如何递归*/
8.9.形参及函数内定义的变量称作局部变量,它从定义处生效,且只在该函数内有效。
因此,不同函数中的局部变量可以同名,但同名不同义。
8.10.在所有函数之外定义的变量称作全局变量,它从定义处生效。
8.11.如果局部变量与全局变量同名,则同名全局变量被屏蔽。
8.12.局部变量的存储方式分为:
自动(auto,默认)、静态(static)、寄存器(register)。
8.13.常用数学函数在头文件math.h中。
掌握基本初等函数。
8.14.掌握参数传递方式:
传值、传址。
掌握课件例题
第10章指针
10.1.内存的基本单位是字节,每个字节都有相应的编号,称作地址或指针。
借助于指针,C语言可以直接访问内存,从而对硬件进行操作。
10.2.变量所占用内存的大小由其数据类型决定,变量所占用内存的第1个字节的地址称作该变量的地址或指针,表为:
&变量名
10.3.指针所指向数据的类型称作该指针的基类型,它所指向数据用
*指针
访问,可作为普通变量使用。
10.4.指针本身也是一种数据类型,占用2字节内存,可作为无符号整数输出和参与关系运算、逻辑运算,但指针的其它运算不同于整数运算。
10.5.指针运算可简单地分为以下五类:
(1)单目运算有六个:
!
、&、*、++、--、sizeof。
(2)双目运算有四种:
-、关系运算、逻辑运算、赋值运算。
(3)指针与整数间的运算有三个:
+、-、[]。
(4)强制类型转换运算:
()。
(5)结构体成员运算:
->。
其中,+、-、++、--、+=、-=均以基类型数据为基本单位。
10.6.一维数组的数组名可作为指针调用,它指向数组中的第一个元素,以数组中元素的类型为基类型。
10.7.对于一维数组来说,
基址+i和&基址[i]
均指向数组中的第i+1个元素(i>=0);
*(基址+i)和基址[i]
均表示数组中的第i+1个元素(i>=0)。
注意:
看课件a+i等价p+i等价&a[i],
*(a+i)等价*(p+i)等价a[i]
10.8.掌握指针及字符串指针赋值,初始化
第11章结构体与共用体
11.1.声明结构体语句的一般格式为:
struct标识符{成员表列};
其中,成员表列为一组声明变量的语句,这些变量称作该结构体的成员,又称数据项、分量、域、字段等。
语句结尾处的分号不可缺省,标识符可以省略,如果不省略标识符,则新增一个数据类型(名):
struct标识符
11.2.定义结构体变量的一般格式为:
struct标识符变量表列;
也可在声明结构体的同时定义变量:
struct标识符{成员表列}变量表列;
11.3.结构体变量可在定义时赋初值,类似于数组赋初值。
11.4.结构体变量的整体使用有以下四种:
(1)赋值:
结构体变量=同类型结构体变量
(2)求存储量:
sizeof(结构体变量)
(3)取地址:
&结构体变量
(4)初始化——与数组初始化相似。
11.5.结构体中成员可作为普通变量使用,成员的访问格式为:
结构体变量名.成员名或结构体指针->成员名
11.6.结构体中的成员名只在该结构体类数据中有效,因此,不同结构体中的成员可以同名,成员名也可与普通变量同名。
11.7.掌握课件例题