《2022年C语言知识点总结终极 .docx》由会员分享,可在线阅读,更多相关《2022年C语言知识点总结终极 .docx(10页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、学习好资料欢迎下载扎堆学社 C 语言期末复习提纲第一章一、对 C 语言的基础熟识1、C 程序由函数组成,函数是程序的基本单位;2、C 语言 书写格式是自由的,每行可以写多个语句,可以写多行;05-06t13、一个 C 语言程序有且只有一个main 函数, 是程序运行的 起点 07-08t2;( 11-12 一期 t一 1)4、字符是组成语言的最基本的元素,C 语言字符由字母 , 数字,空白符标点和特殊字符组成;二、标识符 11-12 一期 t 一 21、标识符(必考内容) :合法的要求是由 字母 ,数字 , 下划线 组成;有其它元素就错了;( 07-08t1 ) 并且 第一个必需为 字母或是
2、下划线 ;第一个为数字就错了.2、用户标识符; ( 用户标识符重点:基本上每年都考;)关键字: 不行以 作为用户标识符号 05-06t3;main define scanf printf都不是关键字 ;困惑你的地方 If是可以做为用户标识符;由于 If中的第一个字母大写了,所以不是关键字;其次章一:整数与实数1) C语言只有 八、十、十六 进制, 没有二进制 ;但是 运行时候,全部的进制都要转换成二进制来进行处理 ;a 、C 语言中的 八进制 规定要 以 0 开头;018 的数值是非法的, 八进制是没有 8 的, 逢 8 进 1;(06-07 二期 t 一; 4);b 、C 语言中的 十六进制
3、 规定要 以 0x 开头 ;( 06-07 二期 t 一; 4)2 小数的合法写法 : C 语言 小数点两边有一个是零的话, 可以不用写 ;1.0 在 C 语言中可写成 1.0.1 在 C 语言中可以写成 .1 ;3) 实型数据的合法形式:a、2.333e-1就是合法的,且数据是2.333 10-1 ;b、考试口诀 : e 前 e 后必有数, e 后必为整数 ;(06-07 二期 t 一; 4)4) 整型 一般是 4 个字节 ,字符型 是 1 个字节,长整型4 个字节,浮点型4 个字节, 双精度一般是 8 个字节:( 05-06t2 )5) 实型常默认为双精度型; ( 05-06 一期 t 一
4、; 8)二:算术表达式和赋值表达式1、算术表达式: +, - , * ,/ , %考试肯定要留意: “ / ” 两边 都是 整型的话,结果就是一个整型;3/2的结果就是 1. “ / ” 假如 有一边是 小数,那么结果就是小数;“ %”符号请肯定要留意是 余数 ,考试最简洁算成了除号; )%符号两边要求是整数 ;不是整数就错了; 留意.11-12 一期 t432、赋值表达式:表达式数值是最左边的数值,a=b=5; 该表达式为5,常量不行以赋值 ;1、int x=y=10:错, 定义时 , 不行以 连续赋值;( 06-07 二期 t 三; 2)2、int x,y;x=y=10;对, 定义完成后
5、, 可以 连续赋值;3、赋值的左边只能是 一个变量 ;4、int x=7.7;对, x 就是 7 5、float y=7;对, y 就是 7.03、复合的赋值表达式a*=b+3;等价于 a=a*b+3 4、自加表达式:自加、自减表达式:假设a=5, +a(是为 6), a+ (为 5);运行的机理: +a 是先把变量的数值加上1,然后把得到的数值放到变量a 中,然后再用这个 +a 表达式的数值为6,而 a+是先用该表达式的数值为5,然后再把 a 的数值加上 1 为 6,再放到变量 a 中; 进行了 +a 和 a+后 在下面的程序中再用到a 的话都是变量 a 中的 6了;考试口诀 : +在前先加
6、后用 , +在后先用后加 ;(05-06 一期 t 一 13)5、逗号表达式:优先级别 最低 ; 赋值 的级别 倒数其次 . 表达式的数值逗号最右边的那个表达式的数值;( 2, 3, 4)的表达式的数值就是4;z= ( 2, 3,4) 整个是赋值表达式 这个时候 z 的值为 4;z= 2 , 3,4 (整个是逗号表达式)这个时候z 的值为 2;补充:1、空语句 不行以 随便执行,会导致 规律错误 ;06-07二期 t 一 142、注释 不是 C 语言 ,不占 运行时间, 没有分号; 不行以 嵌套!3、强制类型转换 :肯定是 ( int ) a 不是 int( a),留意 类型上 肯定有括号 的
7、;留意( int )( a+b) 和( int ) a+b 的区分; 前是把 a+b 转型,后是把 a 转型再加 b;三、字符1)字符数据的合法形式: :1是字符 占一个字节, 1 是字符串占 两个字节 含有一个终止符号 ;0的 ASCII 数值表示为 48, a的 ASCII 数值是 97, A 的 ASCII 数值是 65;表示单个字符错误的形式:651字符是可以进行算术运算的,记住:0-0=48大写字母和小写字母转换的方法:A+32=a相互之间一般是相差32;2)转义字符: ( 06-07 二期 t 一; 6,12)转义字符分为 一般转义字符、八进制转义字符、十六进制转义字符;一般转义字
8、符: 0 、 n 、”、;八进制转义字符: 141 十六进制转义字符:x6d 3)、字符型和整数:两个具有很大的相像之处char a = 65 ;printf“ %c” , a;得到的输出结果:a printf“ %d” , a;得到的输出结果:65四:数据输出1、使用 printf和 scanf 函数时,要在最前面加上#include“ stdio.h”2、printf 可以只有一个 参数, 也可以有两个 参数;3、printf(“ 第一部分 ”,其次部分);把其次部分的变量、表达式、常量以第一部分的形式呈现出来;4 、int x=12, y=34;留意这种题型06-07二期 t 一 18
9、printf(“ %d ”, x , y ); 前面的 x 不输出5、最好登记的格式说明表示内容格式说明表示内容%d整型 int%c字符 char%ld长整型 longint%s字符串%f浮点型 float%o八进制%lfdouble%x十六进制举例说明:printf(“ %2d”, 123 ); 其次部分有三位,大于指定的两位,原样输出 123printf(“ %5d”, 123 ); 其次部分有三位,小于指定的五位,左边补两个空格 123五 数据输入 ( 05-06 一期 t 一; 10)11-12一期 t 一 7 1、scanf (“ a=%d, b=%d”, &a, &b) 考试超级重
10、点!肯定要记住是 以第一部分的格式在终端输入数据;在黑色屏幕上面输入的为a=12, b=34才可以把 12 和 34 正确给 a 和 b ;有一点不同也不行;2、scanf (“ %d, %d”, x,y);这种写法确定错误,scanf 的其次个部分肯定要是地址!scanf (“ %d, %d”, &x, &y);留意写成这样才可以!也可以把两个%之间的逗号去掉,(输入数据时用空格tab 或者回车隔开)但是两个&之间的逗号不能去掉;3、特殊留意指针在scanf 的考察例如: int x=2; int *p=&x;scanf (“ %d”, x );错误scanf(“ %d”,p);正确 sca
11、nf (“ %d”, &p);错误scanf(“ %d”, *p )错误 4、字符和整型是近亲:int x=97;printf(“ %d”, x);结果为97printf(“ %c”, x);结果为a5、输入时候字符和整数的区分(考试重点 )scanf (“ %d”, &x);这个时候输入 1,特殊留意表示的是整数 1scanf (“ %c”, &x);这个时候输入 1,特殊留意表示的是字符1ASCII 为整数 49补充说明:putchar ,getchar函数的考查:char a = getchar是没有参数的,从键盘得到你输入的一个字符给变量a;留意只能接收一个字符; gets 就可以接收
12、一串字符06-07二期 t 一 13putchary 把字符 y 输出到屏幕中;第三章特殊要留意: C 语言中是用非 0 表示规律真的,用0 表示规律假的 .关系运算符号:留意 8 这个关系表达式是真的,所以98 这个表达式的数值就是1;如 76 这个关系表达式是假的,所以76 这个表达式的数值就是0 b、考试最简洁错的:就是int x=1,y=0,z=2;xyz是真仍是假?带入为102,从数学的角度动身确定是错的,但是假如是C 语言那么就是正确的!由于要10 为假得到 0,表达式就变成了 0&|优先的级别;c) 留意短路现象; p31d) 表示 x小于 0 大于 10 的方法;0x10 是不
13、行的( 肯定记住 );是先运算 0x 得到的结果为 1 或就 0;再用 0,或 1 与10 比较得到的总是真(为1);所以肯定 要用 0x&x10表示比 0 大比 10 小;3) if 语句a 、else是与最接近的 if且没有 else的语句匹配;( 06-07 二期 t 一 16) b 、交换的程序写法: t=x ; x=y ; y=t ;c 、if ( ab)t=a;a=b;b=t;if( ab? c: de? d: e; 求 k 的数值是多少?5) switch 语句:a) 执行的流程肯定要弄懂!请自己肯定弄懂.P40b)留意有 break和没有 break 的差别,没有 break
14、时候,只要有一个case 匹配了,剩下的都要执行,有 break 就是直接跳出了 switch语句; break 在 C 语言中就是分手,一刀两断的意思;c) switchxx:是整型常量,字符型常量,枚举型数据;case 1:.不行以是变量;case 2: .1)三种循环结构:第四章a ) for () ; while;do- while三种;b ) for循环当中必需是两个分号(表达式可以省略),千万不要遗忘;c )循环肯定要有终止的条件,否就成了死循环(条件永真);d) do-while循环的最终一个while;的分号肯定不能够丢;do while循环是至少执行一次循环;e) 循环体如包
15、含一个以上的语句,应当用花括号括起来,否就while循环体只作用到 while后面的第一个分号;2 break和continue 的差别记忆方法:break :是 打破 的意思,(破了整个循环)所以观察break 就退出整个一层循环;continue: 是连续 的意思,(连续循环运算) ,但是要终止本次循环,就是循环体内剩下的语句不再执行,跳到循环开头,然后判定循环条件,进行新一轮的循环;3)嵌套循环就是有循环里面仍有循环,这种比较复杂, 要一层一层一步一步耐心的运算,一般记住两层是处理二维数组的;4 while( c=getchar ) .= n) 和while ( c=getchar .=
16、 n)的差别先看 a = 3 .= 2和 ( a=3)! =2 的区分:(! =号的级别高于 =号 所以第一个先运算3 !=2) 第一个 a 的数值是得到的 1;其次个 a的数值是 3;考试留意点 : 括号在这里的重要性; ()5)如何整除一个数:i%5=0表示整除5I%2=0表示整除2,同时表示是偶数!06-07二期 t 四; 26) 不停的输入,直到输入# 停止输入!while x=getchar.= # 7) 常考的考题: 摸索 k 的结果 int k=1int k=1;while ( - -k);while( k- -);printf(“ %d”, k);printf(“ %d”, k
17、);第五章数组: 存放的类型是一样的;多个数组元素的地址是连续的;1、一维数组的初始化:int a5=1,2,3,4,5;合法int a5=1,2,3, ;合法int a=1,2,3,4,5;合法 , 常考,后面打算前面的大小!int a5=1,2,3,4,5,6;不合法 ,赋值的个数余外数组的个数了读入: fork=0,k10,k+ scanf“ %f” ,&ak;2、一维数组的定义;int a5;留意这个地方有一个重要考点,定义时数组的个数不是变量肯定是常量(p70); int a5合法,最正常的数组int a1+1合法,个数是常量2,是个算术表达式int x=5,int ax;不合法,由
18、于个数是x,是个变量,非法的,#define P 5int aP ;合法, define后的的 P 是符号常量,只是长得像变量11-12一期 t 一 53、二维数组的初始化int a23=1,2,3,4,5,6;合法,很标准的二维的赋值;int a23=1,2,3,4,5, ;合法,后面一个默认为0;int a23=1,2,3, 4,5,6;合法,每行三个;int a23=1,2,3,4,5;合法,第一行最终一个默认为0;int a23=1,2,3,4,5,6,7;不合法 ,赋值的个数余外数组的个数了;int a3=1,2,3,4,5,6;不合法 ,不行以缺省行的个数;int a2=1,2,3
19、,4,5,6;合法,可以缺省列的个数;4、字符数组1 )字符串的赋值C 语言中没有字符串变量,所以用数组和指针存放字符串:1、charch10=“ abcdefgh ”;对2、charch10=“ abcdefgh ”;对3、charch10= a , b, c , d, e , f , g , h ;对4、char*p=“ abcdefgh ” ;对5、char*p=“ abcdefgh ” ;错了!不能够显现大括号!(4, 5 与 1, 2 对比) 6、char*p;对p=“ abcdefgh ” ;7、charch10;错了!数组名不行以赋值!( 06-07 二期 t 三; 1. 05-
20、06一期 t 三; 5)ch=“ abcdefgh ” ;2字符串的引用 :1 用 scanf 时不再加 &;2scanf不能输入带有空格的字符串(gets 可以);假如输入的是zhadui xueshe! 那么 scanf“%s” ,a;只会接收zhadui.考点:不行 以接收空格; getsa;会接收zhadui xueshe.考点:可以接收空格;3printf遇到第一个 0 时停止;(留意末尾 0 )3)字符串函数 p85gets 字符数组名 或字符指针变量 ;接收用户输入的字符串07-08一期 t 三, 5 puts 字符数组名或字符指针变量或字符串常量 ;会在屏幕上打印出字符串,从指
21、定地址开头输出,遇到0 终止;( 05-06 一期 t 三.2 输出 ina )strlen字符数组名或字符指针变量; 字符串测长函数 , 留意是有效长度,包括空格,不包括末尾的 0 strcat字符串 1 的地址,字符串 2 的地址 ;将字符串 2 的内容连接到字符串1 的尾部;(串 1 要足够长 strcmp 字符串 1 的地址,字符串 2 的地址 ;比较串 1 和串 2 哪个比较大;比较大小的依据是,两个字符串从左往右相应位置上第一个不相等的字符 ASCII 码值之差;strcpy字符串 1 的地址,字符串 2 的地址 ;将字符串 2 的内容复制到字符串1 内; 串 1 要足够长 补充:
22、 1)一维数组的重要概念: 对 a10 这个数组的争论;、 a 表示数组名,是第一个元素的地址,也就是元素 a0 的地址 ;( 等价于 &a)、 a 是地址常量,所以只要显现a+,或者是 a=a+2 赋值的都是错误的;2)两种重要的数组长度:char a= a , b , c ;数组长度为,字符串长度不定;sizeofa为;char a5=a , b , c 数组长度为,字符串长度;第六章sizeofa为;1、函数:是具有肯定功能的一个程序块,是C 语言的基本组成单位;2、函数之间是并列关系,不行以嵌套定义;但是可以嵌套调用;3、函数名缺省返回值类型,默认为int;4、C 语言由函数组成,但有
23、且仅有一个main 函数!是程序运行的开头!5、形参表可以为空;也可以由一个或者多个组成;多个形参逗号隔开;6、用 return只能返回一个值到主调函数;7、函数的参数可以是常量,变量,表达式,甚至是函数调用 ;8、 函数的参数,返回数值(示意图):mainint a = 5,b=6,c; c = adda,b; printf “%d”,c;调用函数a,b 是实参整个函数得到一个数值就是Add 函数的返回数值;int add int x, int yint z; z=x+y; return z;被调用函数x, y 是形式参数函数返回数值是整型z 就是这个add 函数运算后得到的结果, 就是函数
24、返回给主程程序是在从上往下次序执 行,当遇到了函数add 后, 把 a,b 的数值穿给调用函数,程序临时中断等待返 回数值;当得到了返回数 值后,再次序的往下执行序的返回数值;9、肯定要留意参数之间的传递实参和形参之间传数值,和传地址的差别; (考试的重点07-08 二 10)( p104-105 )传数值的话,形参的变化不会转变实参的变化;传地址的话,形参变量拥有了对主调函数变量的拜访权,就会有可能转变实参的变化;10、函数声明的考查: 一般而言函数的定义和声明形式相同,数组作为函数参数的引用需要用其首地址即数组名 肯定要有:函数名,函数的返回类型,函数的参数类型;不肯定要有:形参的名称;填
25、空题可能会考到!如(07-08 一期 t 三.4 ) p104-105 某年三; 311、库函数:a、库函数是已经写好了函数,放在仓库中,我们只需要如何去使用就可以了!b、以下这些库函数比较重要sqrt、 fab,(某年期末三; 4) getcharputsprintfputcharscanf字符串的 strlen和 strcat() 和 strcmp () 和 strcpy()的使用方法要记住;他们的参数都是地址;其中strcat() 和 strcmp ()有两个参数;12、变量的储备属性(06-07 二期 At 一 2)1 、自动( auto )变量( 06-07 二期 Bt 一 36)2
26、 、寄存器变量 register通常把使用频率较高的变量定义为寄存器变量;( 06-07 二期 Bt 一 22)3 、静态变量static常考内部静态变量07-08 一期 t2.6留意:局部作用域,全局的生存期;被定义的变量始终不被释放;( p117 例题)static int x;默认值为 0;int x:默认值为不定值;4 、外部变量 extern在一个文件中,定义在全部函数之外的变量称为外部变量;留意:全局作用域;但是假如外部变量不在文件开头定义,在定义位置之前使用该变量需要用extern进行声明;(课本 p116 例题)第七章指针变量的本质是用来放地址,而一般的变量是放数值的1、int
27、 *p中 *p和 p 的差别:简洁说 *p 是数值, p 是地址!*p 可以当做变量来用;* 的作用是取后面地址p 里面的数值p 是当作地址来使用;可以用在scanf 函数中: scanf (“ %d”, p);2、*p+和 (*p ) +的之间的差别:*p+ 是 地址会变化;口诀:取当前值,然后再移动地址!( *p ) + 是数值会要变化;口诀:取当前值,然后再使数值增加1;指针困惑的考点: 11-12 一期 t 一 30char ch=” woaizhadui ” ;char *p=ch;问你 * (p+2) 和 *p+2的结果是多少?ac结果是这两个,想不通的同学请用吃奶的力气想!想通为
28、止!3、指向指针的指针:*p :一级指针:存放变量的地址;*q :二级指针:存放一级指针的地址;4、三名主义: (考试的重点)函数名:表示该函数的入口地址;数组名:表示第一个元素的地址;数组名不行以自加,他是地址常量名;字符串常量名:表示第一个字符的地址; 5、移动指针char *s=“ xuelei”while ( *s ) printf(“ %c”,*s ); s+; 这个 s 第一会指向第一个字母m然后通过循环会一次打印出一个字符,s+是地址移动,打印了一个字母后,就会移动到下一个字母!6、指针变量两种初始化(肯定要看懂)方法一: int a=2, *p=&a; 定义的同时初始化 方法二
29、: int a=2, *p ; 定义之后初始化 p=&a;7、传数值和传地址(几乎每年必考)05-06t28,07-08t10 , 06-07二期 t三; 5、07-08二10.p128p135void fun( int a,int b)void fun( int *a, int *b) int t; int t;t=a; a=b; b=t ;t=*a; *a=*b ; *b=t ;main ()main() int x=1, y=3, int x=1, y=3,fun( x, y );fun( &x, &y)printf(“ %d, %d”, x, y);printf(“ %d,%d”, x
30、, y);这个题目答案是 1 和 3;这个题目的答案就是3 和 1;传数值, fun 是用变量接受,所以fun 中传地址, fun 用指针接受!这个时候fun 的交换不会影响到main 中的 x 和 y ;中的交换,就会影响到main 中的 x 和 y;传数值,形参的变化不会影响实参;传地址形参的变化绝大多数会影响到实参! 8、函数指针的用法( *f )()记住一个例子:int addint x, int y.main int( *f )() ;f=add;赋值之后:合法的调用形式为、add2 , 3 ;、 f2 , 3 ;、(*f )( 2, 3) 9、考试重要的话语:指针变量是存放 地址
31、的;并且指向哪个就等价哪个,全部显现 *p 的地方都可以用它等价的代替;例如: int a=2, *p=&a; *p=*p+2; 由于 *p 指向变量 , 所以指向哪个就等价哪个,这里*p 等价于,可以相当于是a=a+2第八章1、结构体结构体类型的声明: struct结构体名成员列表;结构体变量的定义: 1,struct结构体名 变量名表 ;2,struct结构体名 成员名表 变量名表 ;3struct 成员名表 变量名表 ;结构体变量的引用:1 结构体变量名 . 成员名; 2 结构体变量名 . 成员名 . 基本成员名结构体数组初始化struct xchar str9; int s;struc
32、t x class4 = John,17, Paul,19, Mary,18, Adam,16,;结构体数组拜访x0.str表示“ John”x0.str0表示 J x0.s表示 172、共用体的考查: 共用体变量所占存长度是最长成员的长度 union TT int a;char ch2;考点:sizeof struct TT = 4;1、文件的基本概念第九章(非重点)熟识文本文件、二进制文件p174-175p176-p177 )把握文件的打开FILE * fp;fp=fopen文件名,文件操作方式;关闭格式w只读 、 a 追加 和 r只写 打开放式的区分exit函数终止程序执行fputc字符
33、变量 ,fp和 fgetcfp函数的调用形式(某年期末t 三; 2) 2、文件的读写#include void WriteStrchar *fn,char *str FILE *fp; fp=fopenfn,w;fprintffp,”%s”,str; fclosefp;mainWriteStrt1.dat,111;WriteStrt1.dat,222;feoffp判定文件是否是否到结尾,假如到结尾为真补充1) 程序结构是三种 :次序结构 、挑选结构 分支结构 、循环结构2) 运算机的数据在电脑中储存是以二进制 的形式 .数据存放的位置就是他的地址 .3) bit是位 是指为 0 或者 1; byte是指 字节 ,一个字节 =八个位 .字符 :人们使用的记号,抽象意义上的一个符号;1, 中, a, $, ¥, 字节 :运算机中储备数据的单元, 一个 8 位的二进制数, 是一个很详细的储备空间;0x01,0x45, 0xFA,在内存中,一个字符可能使用一个字节或多个字节来表示;( 06-07|期 t 一 6)概念常考到的:1、define PI 3.1415926;这个写法是错误的, 肯定不能显现分号 ;2、算法: 可以没有 输入 ,但是 肯定要有 输出 ;3、break可用于循环结构和switch语句;4、字符串中的空格也是字符;
限制150内