C语言复习提纲.docx
- 文档编号:7843784
- 上传时间:2023-01-26
- 格式:DOCX
- 页数:16
- 大小:27.58KB
C语言复习提纲.docx
《C语言复习提纲.docx》由会员分享,可在线阅读,更多相关《C语言复习提纲.docx(16页珍藏版)》请在冰豆网上搜索。
C语言复习提纲
C语言复习提纲
C语言概述
1.程序设计语言:
机器语言、汇编语言、高级语言。
2.高级语言翻译成机器语言的两种方式:
编译方式、解释方式。
3.算法+数据结构+(编程语言)=程序
4.结构化程序设计的三种基本结构:
顺序结构、分支(选择)结构、循环结构
5.C语言由函数组成,有且仅有一个main函数。
6.函数:
说明部分、函数体。
7.一条复杂语句分行书写,用反斜杠(\)续行。
8.注释用/*……*/(多行)或//(单行)
9.每个语句由分号(;)结束(注意for语句和while语句等可以不接循环体,直接加分号)。
数据类型、运算符和表达式
1.常量(记表2-1):
◆整型常量(记表2-2、2-3):
235、0235、-0x235(前可加负号),长整型:
-12l(L)、-065l(L)、0x55l(L)等。
◆实型常量(记表2-4、2-5):
小数形式、指数形式。
◆字符常量:
用单引号,如’c’。
◆转义字符(记表4-1)。
◆字符串常量:
用双引号,如”haha”、”abc”,内存占用为实际长度加1(结束标志’\0’)。
◆符号常量(宏常量)(3.2):
#define(宏常量没有数据类型,编译器只进行简单的字符串替换,注意M(x)和M((x))的区别)。
◆const常量(3.3):
标识符被声明为具有某种类型的常量,只能在定义时赋初值
2.变量:
◆标识符命名规则:
(2.1.2)。
◆各种类型变量的长度(见附录B):
整型4个字节(VC6.0中)、浮点型(float)4个字节、字符型1个字节。
◆数据类型(记表2-6)。
◆不同数据类型数据之间的混合运算:
不同数据类型之间的运算必须先转换成相同数据类型才能运算。
◆数据类型转换(3.4):
自动、强制。
注:
强制类型转换只得到所需类型的结果值,原变量或表达式的类型仍为原类型。
如(float)(x+y)
3.各种运算符运算规则(2.5赋值、3.1算术、5.9逻辑、5.10.3位运算,不要求)。
优先级与结合性见附录C(算术>关系>位(移位例外)>逻辑)
4.增1减1运算符(3.1.3):
i++,++i,i--,--i。
(不清楚可以在系统中运算查看结果)。
5.其它运算符:
复合运算符、条件运算、逗号运算、长度运算符(形式:
sizeof(表达式或变量名)或sizeof(数据类型))
标准输入输出
1.单字符输入/出:
putchar(字符变量)、getchar()。
注意getchar()没有参数。
2.字符串:
gets(字符数组名)、puts(数组名)。
3.格式化输入:
scanf(格式控制字符串,地址列表);(记表4-4、4-5)
格式控制符(格式转换说明符):
%c、%d、%o、%x、%s、%f
◆若输入long型、double型应加l,如%ld、%lo、%lf
◆格式%s输入字符串,遇到第一个空白字符时结束,且对应地址表列是字符数组名或指向数组的指针。
◆默认分隔符(空白字符):
空格、回车、Tab键(也可按域宽截取)
◆输入函数中%f格式不能带小数,如:
scanf(“%7.2f”,&a)是错误的。
◆%c格式输入单字符,空白字符和转义字符都作为有效字符接收。
4.格式化输出:
printf(“格式控制字符串”[,输出列表]);(记表4-2、4-3)
◆格式控制符部分可加入其它字符,原样输出。
如:
提示语或使输出结果清楚显示
◆输出列表:
可以是变量、常量、表达式、函数调用等。
◆转义字符:
以斜杠(\)开始,作为一个字符,如求字符串长度:
“jk\\gk\bl\0k\nlj”,长度为7。
◆输出long、double型数据,用%ld、%lf
◆可设定输出宽度,m和n,如:
%5d、%6.2f、%.2f
◆负号表示域内向左对齐,如:
%-12d
选择结构
1.if语句的三种形式:
◆If(表达式)语句;
◆If(表达式)
{语句1;}
Else
{语句2;}
◆If(表达式1){语句1;}
Elseif(表达式2){语句2;}
Elseif(表达式3){语句3;}
……
Elseif(表达式n){语句n;}
Else{语句n+1;}
2.if语句的嵌套。
3.switch语句结构
Switch(表达式)
{
Case常量表达式1:
语句1;break;
Case常量表达式2:
语句2;break;
……
Case常量表达式n:
语句n;break;
default:
语句n+1;
}
4.if中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。
表达式的值为0则为假,为非0则为真。
5.逻辑表达式的优化运算:
◆&&运算:
只要算出第一个表达式为0,第二个表达式不再运算。
◆||运算:
只要算出第一个表达式为1,第二个表达式不再运算。
如:
inti=0,j=0,a=6;if((++i>0)||(++j>0))a++;printf(%d%d%d”,i,j,a);
结果i为1,j为0,a为7。
6.如果有多条语句,必须用大括号括起,构成复合语句。
7.switch语句中case后面只能是常量值;若执行完某case后的语句没遇到break,则继续执行下一个case语句。
循环结构
1.主要的循环结构
◆while(表达式){语句;}
◆do
{循环语句序列;}
While(表达式);
◆for(循环变量初值表达式1;循环结束条件表达式2;循环变量增值表达式3)
{循环语句;}
while、for中的表达式,一般是逻辑或关系表达式,也可以是任意类型表达式。
2.如果有多条语句,必须用大括号括起,构成复合语句。
3.循环程序:
注意循环变量的初值、循环条件、修正值等,以及循环中用到的某些变量赋初值,如求累加和变量。
4.一般是先判断条件,再执行循环体;但do—while语句是先执行一遍循环体,再判断条件。
5.break语句跳出整个循环体,不再执行循环、continue语句结束本次循环,可继续执行下一次循环判断。
数组
1.数组定义:
inta[10];或inta[N](N需要事先定义为符号常量:
#defineN10);
数组长度必须是常量值,不能是变量,可以是在程序开始前定义的符号常量,进行长度定义。
2.下标引用:
0~N-1,切记不能引用到N。
(inta[5];a[5]=10;这种引用是错误的)
3.数组初始化时可省略长度定义。
(二维数组的第二维长度永远都不可以省略)
4.数组不能整体赋值。
数组中各元素值的输入/出,应使用循环程序逐个输入/出;字符数组例外(gets、puts)。
5.数组中的排序和查找(8.4)
6.二维数组:
按行存放;赋初值的4种情况(8.2)。
7.字符数组:
通常定义较长长度,如:
chars[50];通常用于存放字符串,结束标志为‘\0’。
可用字符串常量为其初始化,如:
chars[]=“sdkhg”;也可由键盘输入,如gets(s);输出用puts(s);
注意:
chars[5]={‘a’,’d’,’f’,’g’,’w’};此种形式不是字符串,无字符串结束标志,仅仅是普通一维字符数组,不能用puts输出,只能用%c格式逐个输出。
字符数组的输入/出还有两种形式:
%c、%s。
8.字符串函数(10.5):
strlen、strcpy、strcmp、strcat
函数
1.函数定义:
intfun(inta,inty);如定义时没指明函数类型,如:
fun(inta);默认是int型,返回值不确定。
2.声明:
函数定义在前,使用在后,可省略函数声明,反之需要在使用前声明。
◆函数声明后加分号,而函数定义后没有分号。
3.函数调用:
函数名(实参表);
◆实参与形参个数、类型、位置一致。
◆形参与实参占据不同的存储单元;形参只在函数调用时才为其分配存储单元,函数调用结束后释放。
◆实参与形参之间是传值调用,单向传递关系,形参值改变,不会影响实参值。
◆补充:
函数可嵌套调用,不可嵌套定义。
◆嵌套调用:
一个函数内部又调用另外一个函数。
◆递归调用:
一个函数调用它自身。
4.从作用域角度,变量分为:
全局变量、局部变量。
◆局部变量:
在函数内部定义,只能在该函数中使用,包括函数的形参和复合语句中定义的变量,main函数中定义的变量也是局部变量,不能被其它函数使用。
◆不同函数内定义的同名变量,互不影响,因其作用域不同,内存空间独立。
◆
◆
◆全局变量:
在函数外部定义,作用域从定义开始到本文件结束。
其间的所有函数都可以使用它,可在各函数间传递值,但容易带来副作用,降低模块独立性。
5.变量存储类型(7.5.2):
重点了解静态变量static
◆静态变量仅在第一次进入函数时被自动初始化为0。
◆在第二次进入函数时,静态变量的值仍然保持上一次退出函数前所拥有的值。
6.动态内存分配(11.4.2)
void*malloc(unsignedintsize);
void*calloc(unsignedintnum,unsignedintsize);
voidfree(void*p);
void*realloc(void*p,unsignedintsize);
指针
1.指针的基本概念:
指针≡地址;
2.指针常量:
某已知变量的地址,或数组名等,:
inta,b[5];此时&a和b就是指针常量(固定值)。
3.指针变量:
如inta,*p=&a;chars[9],*q=s;
◆赋值:
必须赋地址值,如inta,*p;p=&a;
如p=2001;是错误的。
4.间接访问:
*p=5;等同于a=5;
5.指针作为函数的参数,传递的是实参变量的地址,
如:
voidfunc(int*p)
◆调用时用某变量的地址常量,或指向该变量的指针作为实参,如主调函数中有定义inta,*q;q=&a;则可用&a或q作为实参进行调用,即func(&a);或func(q);都是将变量a的地址传递给形参指针p,使指针p指向变量a。
函数中使用*p就是对a的间接访问,就可以改变a的值,或者将结果放入a中。
但形参变量本身改变,反过来不会影响实参指针值。
6.指针与一维数组:
inta[10],*p=a;则a代表数组首地址,是指针常量,
◆元素的表示方法:
a[i]、*(a+i)、p[i]、*(p+i)
◆元素地址:
&a[i]、a+i、&p[i]、p+I
◆区别:
a实指针常量,只不能变,而p是指针变量,可进行增减运算;所以常通过p的增减运算来快速访问数组a,如:
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 语言 复习 提纲