资源描述
C语言知识点总结资料I
总体上必要清晰:
程序构造是三种:顺序构造,循环构造(三个循环构造),选取构造(if和switch)
读程序都要从main()入口,然后从最上面顺序往下读(遇到循环做循环,遇到选取做选取)。
计算机数据在电脑中保存是以二进制形式。数据存储位置就是它地址。
bit是位是指为0或者1。byte是指字节。一种字节=八个位。
—定要记住二进制如何转换成十进制。
概念常考到:
1、编译预解决不是C语言一某些,不占运营时间,不要加分号。C语言编译程序称 为源程序,它以ASCII数值存储在文本文献中。
2、每个C语言程序中main函数是有且只有一种。
3、在函数定义中不可以再定义函数。
4、算法是一定要有输出,她可以没输入。
5、break可用于循环构造和switch语句。
6、逗号运算符级别最低。
第3章
1)合法顾客标记符考查:
合法规定是由字母,数字,下划线构成。有其他元素就错了。
并且第一种必要为字母或则是下划线。第一种为数字就错了。
核心字不可以作为顾客标记符号。main define scanf printf都不是核心字。困惑你 地方If是可以做为顾客标记符。由于If中第一种字母大写了,因此不是核心字。
2)实型数据合法形式:
2.333e-1就是合法,且数据是2.333X10'
考试口诀:e前e后必有数,e后必为整数。
3)字符数据合法形式::
'1'是字符占一种字节,"1"是字符串占两个字节(具有一种结束符号)。
'0'ASCII数值表达为48,'a'ASCII数值是97,'A'ASCII数值是65。
普通考试表达单个字符错误形式:' 65' "1"
字符是可以进行算术运算,记住:'0'-0=48
大写字母和小写字母转换办法:' A'+32='a'互相之间普通是相差32。
4)int型TC中是2个字节,VC中是4个字节。字符型是1个字节。
5)转义字符考查:
在程序中int a = 0x6d,是把一种十六进制数给变量a注意这里0x必要存在。
在程序中int a = 06d 是一种八进制形式。
在转义字符中,’\x6d’才是合法,0不能写,并且x是小写。
’\141’是合法,0是不能写。’\108’是非法,由于不可以浮现8。
6)强制类型转换:
一定是(int) a不是int (a),注意类型上一定有括号。
注意(int) (a+b)和(int) a+b区别。前是把a+b转型,后是把a转型再加b。
7)表达式考查:
是表达式就一定有数值。
赋值表达式:表达式数值是最左边数值,a=b=5;该表达式为5,常量不可以赋值。
自加、自减表达式:假设a=5,++a (是为6),a++ (为5);
运营机理:++a是先把变量数值加上1,然后把得到数值放到变量a中,然后再用这 个++a表达式数值为6,而a++是先用该表达式数值为5,然后再把a数值加上1为6, 再放到变量a中。进行了++a和a++后在下面程序中再用到a话都是变量a中6 了。
考试口诀:++在前先加后用,++在后先用后加。
逗号表达式:优先级别最低;表达式数值逗号最右边那个表达式数值。(2,3,4)表达式数值就是4。
8)018数值是非法,八进制是没有8,逢8进1。
9)%符号两边规定是整数。不是整数就错了。
10)三种取整丢小数状况:
1、int a =1.6;
2、(int)a;
3、1/2; 3/2;
11)字符型和整数是近亲: char a = 65 ;
printf(“%c”,a);得到输出成果:a
prmtf(“%d”,a);得到输出成果:65
12)printf函数格式考查:
%d相应整型;%c相应字符;%f相应单精度等等。宽度,左对齐等修饰。 %ld 相应 long int;%lf 相应 double。
13)scanf函数格式考察:
注意该函数第二个某些是&a这样地址,不是a;
scanf(“%d%d%*d%d”,&a,&b,&c);跳过输入第三个数据。
14)putchar ,getchar 函数考查:
char a = getchar()是没有参数,从键盘得到你输入一种字符给变量a。
putchar(‘y’)把字符y输出到屏幕中。
15)如何实现两个变量x,y中数值互换(规定背下来)
不可以把x=y ,y=x;要用中间变量t=x;x=y; y=t。
16)如何实现保存三位小数,第四位四舍五入程序,(规定背下来)
这个有推广意义,注意x = (int) x这样是把小数某些去掉。
第4章
特别要注意:e语言中是用非0表达逻辑真,用0表达逻辑假。
1)关系表达式:
表达式数值只能为1 (表达为真),或0 (表达假)
当关系表达是为真时候得到1。如9>8这个是真,因此表达式数值就是1;
2)逻辑表达式:
只能为1 (表达为真),或0 (表达假)
a) 共有&& || !三种逻辑运算符号。
b) !>&&>||优先级别。
c) 注意短路现象。考试比较喜欢考到。
d) 要表达x是比0大,比10小办法。0<x<10是不可以(一定记住)。是先计算 0<x得到成果为1或则0;再用0,或1与10比较得到总是真(为1)。因此一 定要用(0<x)&&(x<10)表达比0大比10小。
3) if语句
else是与最接近if且没有else相组合。
4) 条件表达式:
表达式1 ?表达式2 :表达式3
注意是当非0时候是表达式2数值,当为0是就是表达式2数值。
考试口诀:真前假后。
5)switch 语句:
a) —定要注意有break和没有break差别,书上(34页)两个例子,没有break 时候,只要有一种case匹配了,剩余都要执行,有break则是直接跳出了 switch语句。
b) switch只可以和break —起用,不可以和continue用。
C) switch(x) x:是整型常量,字符型常量,枚举型数据。
{case 1:.... 不可以是变量。
case 2:...
}
第5章
1)三种循环构造:
a) for () ; while();do- while()三种。
b) for循环当中必要是两个分号,千万不要忘掉。
c) 写程序时候一定要注意,循环一定要有结束条件,否则成了死循环。
d) do-while()循环最后一种while();分号一定不可以丢。(当心上机改错),do—while 循环是至少执行一次循环。
2) break 和 continue 差别
记忆办法:
break:是打破意思,(破了整个循环)因此看见break就退出真个一层循环。 continue:是继续意思,(继续循环运算),但是要结束本次循环,就是循环体内剩余 语句不再执行,跳到循环开始,然后判断循环条件,进行新一轮循环。
3) 嵌套循环
就是有循环里面尚有循环,这种比较复杂,要一层一层一步一步耐心计算,普通记住 两层是解决二维数组。
while ((c=getchar())!=’\n’)和 while (c=getchar() !=’\n’)差别
先看a = 3 != 2和(a=3) =2区别:
(!=号级别髙于=号因此第一种先计算3!=2)第一种a数值是得到1;第二个a数值是3。考试注意点:括号在这里重要性。
第6章
1)一维数组重要概念:
对a[10]这个数组讨论。
1、a表达数组名,是第一种元素地址,也就是元素a[0]地址。
2、a是地址常量,因此只要浮现a++,或者是a=a+2赋值都是错误。
3、a是一维数组名,因此它是列指针,也就是说a+1是跳一列。
对a[3][3]讨论。
1、a表达数组名,是第一种元素地址,也就是元素a[0]地址。
2、a是地址常量,因此只要浮现a++,或者是a=a+2赋值都是错误。
3、a是二维数组名,因此它是行指针,也就是说a+1是跳一行。
4、a[0]、a[1]、a[2]也都是地址常量,不可以对它进行赋值操作,同步它们都是列指针, a[0]+1, a[1]+1, a[2]+1 都是跳一列。
5、注意a和a[0]、a[1]、a[2]是不同,它们基类型是不同。前者是一行元素,后 三者是一列元素。
2) 两种重要数组长度:
char a={‘a’,’b’,’c’};数组长度为3,字符串长度不定。sizeof(a)为3。
char a[5]={ ‘a’,’b’,’c’} 数组长度为 5,字符串长度 3。sizeof(a)为 5。
3) scanf 和 gets 数据
如果输入是 good good study!那么scanf(“%s”,a);只会接受good.考点:不可以接受空格。 gets(a);会接受good good study!考点:可以接受空格。
4) 字符串strlen()和strcat ()和strcmp ()和strcpy ()用法一定要记住。她 们参数都是地址。其中strcat ()和strcmp ()有两个参数。
5)二维数组做题目技巧:
如果有 a[3][3]={1,2,3,4,5,6,7,8,9}这样题目。
环节一:把她们写成: 第0列 第1列 第2列
a[0]—> 1 2 3 —> 第0行
a[1]—> 4 5 6 —> 第1行
a[2]—> 7 8 9 —> 第2行
环节二:这样作题目间很简朴:
*(a[0]+1)咱们就懂得是第一行第一种元素往背面跳一列,那么这里就是a[0][1]元素, 因此是1。
*(a[1]+2)咱们就懂得是第二行第一种元素往背面跳二列。那么这里就是a[1][2]元素,因此是 6。
一定记住:只要是二维数组题目,一定是写成如上格式,再去做题目,这样会比较简朴。
6)数组初始化,一维和二维,一维可以不写,二维第二个一定要写
int a[]={1,2}合法。 int a[][4]={2,3,4}合法。 但 int a[4][]={2,3,4}非法。
7)二维数组中行指针
int a[1][2];
其中a当前就是一种行指针,a+1跳一行数组元素。搭配(*) p[2]指针。
a[0],a[1]当前就是一种列指针。a[0]+1跳一种数组元素。搭配*p[2]指针数组使用。
8)尚有记住脱帽子法则:
a[2]变成 * (a+2)
a[2][3]变成 *(a+2)[3],再可以变成 * (* (a+2) +3)
这个思想很重要!
第7章
函数:是具备一定功能一种程序块;是c语言基本构成单位。 ,/
1)函数参数,返回数值(示意图):
2)—定要注意参数之间传递
实参和形参之间传数值,和传地址差别。(考试重点)
传数值话,形参变化不会变化实参变化。
传地址话,形参变化就会有也许变化实参变化。
3)函数声明考查:
一定要有:函数名,函数返回类型,函数参数类型。
不一定要有:形参名称。
4)规定掌握库函数:
sqrt() fabs() pow() sin()其中 pow(a,b)是重点。23 是由 pow(2,3)表达。
5)“文献包括”考查点:
no1.c
#include”no2.c”
main()
{ add(29,33)
}
no2.c
int add(int a,int b) {
return a+b;
}
这里一种C语言程序是有两个文献构成,分别是no1.c,no2.c。那么no1.c中最开始有 个#include”no2.c’’她表达把第二个文献内容给包括过来,那么no1.c中调用add()函数时 候就可以了把数值传到no2.c中被调用函数add()了。
一种文献必要要有main函数。这句话错了。 例如:no2.c就没有。
头文献一定是以.h结束。这句话错了。例如:no1.c中就是#mclude”no2.c”以.c结尾。
第8章
1)指针变量本质是用来放地址,而普通变量是放数值。
2)int *p中 *p和p差别:
*p可以当做变量来用;*作用是取背面地址p里面数值
p是当作地址来使用。
3)*p++和 (*p) ++之间差别——改错题目中很重要
*p++是地址会变化。
(*p) ++是数值会要变化。 (考试重点)
4)三名主义:
数组名:表达第一种元素地址。|数组名不可以自加,她是地址常量名。(考了诸多次)
函数名:表达该函数入口地址。
字符串常量名:表达第一种字符地址。
5)考试重要话语:
指针变量是存储地址。并且指向哪个就等价哪个,所有浮现*p地方都可以用它等价代替。
例如:int a=2,*p=&a;
*p=*p+2;
(由于*p指向变量a,因此指向哪个就等价哪个,这里*p等价于a,可以相称于是a=a+2) 指针变量两种初始化
办法一:int a=2,*p=&a;(定义同步初始化)..
办法二:int a=2,*p;(定义之后初始化p=&a;
文献复习办法:
把上学时候讲文献这一章题目要做一i 上考试都会在练习当中。
strlen和sizeof区别也是考试重点;
define f (x) (x*x) 和define f (x) x*x之间差别。一定要好好注意这写
容易错地方,替代时候有括号和没有括号是很大区别。
int *p;
p = (int *) malloc (2);
p = (int *) malloc (sizeof (int));以上两个等价
当心填空题目,malloc返回类型是void *
尚有main (int argc,char **argv) {}这种具有参数题目,是很呆板题目。第 一种参数是表达输入字符串数目,第二个参数是指向存储字符串。
函数递归调用一定要记得有结束条件,并且要会算简朴递归题目。要会作递归 题目
构造体和共用体以及链表要掌握最简朴。typedef考诸多,并且一定要懂得如何引用 构造体中各个变量,链表中如何填加和删除节点,以及何如构成一种简朴链表,一定记 住链表中节点是有两个域,一种放数值,一种放指针。
函数指针用法(*f)()记住一种例子:
int add(int x,int y)
{ }
main()
{ int (*f)()
f=add;
}
赋值之后:合法调用形式为1、add(2,3);
2、f(2,3);
3、(*f) (2,3)
9)
11)共用体考查:
union TT { int a;
char ch[2];}
考点一:sizeof (struct TT) = 2;
考点二: TT t1 ;t1=0x1234;
那么 ch[0]=0x 34;ch[1]=0x12
展开阅读全文