C语言精华小结
合集下载
相关主题
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
形参的类型、个数和顺序通知编译系统,以便在调用该函数时系统按此进行对照检查(例如
函数名是否正确,实参与形参的类型和个数是否一致)但 int 型可不声明
2、函数的返回值:return;如此使用 return 语句时,只起控制流程的作用,不带回任何值,
故次时函数亦为 void 型
return 表达式; 此表达式的值就是函数的返回值
形式<表示式 1><逻辑运算符><表达式 2>(真 1、假 0) 条件表达式:一般形式:表达式
1?表达式 2:表达式 3
逗号表达式:一般形式:表达式 1,表达式 2,……,表达式
n。整个逗号表达式的值为表达式 n 的值
例:已有定义:int x=7,y=8,z=9;,则表达式!(x+y)+z-1&&y+z/2 的值为 1
}
}
五、循环结构程序设计
1、for 循环结构:一般表达式为:for(表达式 1;表达式 2;表达式 3){……}
可以改为 while 循环:表达式 1;
while(表达式 2)
{语句
表达式 3;
}
(注:“ for(;;) ”相当于“ while(1) ”
2、while 和 do-while 循环结构:
用是向终端输出一个字符;printf(格式控制字符串,输出表链); 格式字符:f 格式符:%m.nf 指定输出的数据共占 m 列,其中有 n 位小数,如果数值长度小 于 m,则左端补空格; o 格式符:以八进制数形式输出整数; x 格式符:以十六进制数 形式输出整数; u 格式符:用来输出 unsigned 类型数据,即无符号数,以十进制形式输 出
二、 数据类型及其运算
1、标识符:标识符可作变量名、符号名、函数名、数组名、文件名以及具有特定含义的名
字。合法的标识符由字母、数字和下划线组成,并且第一个字符必须为字母或下划线,C 语
言区分字母大小写
2、数据类型
分类: 整型: int,长整型以 long int 或 long 表示;实型:单精度 float、双精度 double、
语句和 while 语句、do-while 语句、for 语句;流程转向语句,如 break 语句、continue 语句、
return 语句和 goto 语句 复合语句:复合语句之后不必再用分号结束
2、数据的输入与输出:输入;getchar()函数 作用是从终端设备接受一个字符,只有按下
Enter 键时,读入才开始;scanf(格式控制符串,输入项地址表);输出:putchar()函数 作
4、循环的嵌套:(1)、while()
(2)、do
(3)、for(; ;)
{…
{…
{…
while()
do
for(; ;)
{…}
{…}
{…}
}
while();
}
}
(4)、while()
(5)、for(; ;)
(6)、do
{…
{…
{…
do
while()
for(; ;)
{…}
{…}
{…}
while();
…
程序段 1
程序段 1
程序段 1
# else
# else
# else
程序段 2
程序段 2
程序段 2
# end if
# end if
# end if
九、 指针
1、地址即指针,一般定义为:基本类型 *指针变量名
2、只有整型变量的地址才能放到指向整型变量的指针变量中
3、指针变量作为函数参数:不能企图通过改变指针形参的值而使指针实参的值改变
字符串处理函数:printf()函数,一般形式是:printf(“%m.ns”,字符类型指针);
puts()
函数,一般形式是:puts(字符类型指针); scanf()函数,一般形式是:scanf(“%ms”,字符
类型指针); gets 函数,一般形式是:gets(字符类型指针); 字符串连接函数 strcat()
while 语句的一般形式:while(表达式)
do-while 就语句的一般形式:do
{语句}
{循环体语句}
while(表达式);
3、continue 语句和 break 语句: (1)、continue 语句的一般形式为:continue; 其作用
是结束本次循环,即跳过循环体内 continue 语句后面尚未执行的语句,接着进行下一次是否
{printf(“cannot open this file\n”);
Exit(0);
}
fputc 函数的功能是把一个字符写到磁盘文件上,一般形式是 fputc(ch,fp) ch 是要输出的字
符,fp 是文件指针变量
fgets 函数的功能是从指定的文件读入一个字符串,一般形式是
fgets(str,n,fp); str 是字符数组,n 为要求得到的字符个数,fp 是文件指针变量
单 元 二 维 数 组 a[2] 值 就 是 &a[2][0] a[0]+1 和 *(a+0)+1 都 是 &a[0][1] *(a[i]+j) 或
*(*(a+i)+j)是 a[i][j]的值
*(a+i)和 a[i]等价 a[i][j]的地址为&a[0][0]+i*m+j 字符
数组可以在定义时整体赋初值,但不能在赋值语句中整体赋值
4、数组与指针:如果指针变量 p 一指向数组中的一个元素,则 p+1 指向同一数组中的下一
个元素 p+i 和 a+i 就是 a[i]的地址 指向数组的指针变量,p[i]与*(p+i)等价 数组
a 代表数组首元素的地址,它是一个指针常量,所以 a++是无法实现的
*p++等价于
*(p++)
如果用指针变量作实参,必须先使指针变量有确定值,指向一个已定义的
四、选择结构程序设计
1、if 语句:(1)、if(表达式)语句 (2)、if(表达式) 语句 1
else 语句 2
(3)、if(表达式 1)语句 1
(4)、 if(表达式 1)
else if(表达式 2)语句 2
if(表达式 2)语句 1
else if(表达式 3)语句 3
else 语句 2
……
else
}
…
}
while();
}
六、 数组的定义和引用
1、数组的定义与引用:定义数组时,[ ]不能写成(),数组长度必须明确指定;
赋初值时,可以不明确说明数组长度(注:不能使用如下形式数组元素赋以相同的初值:如
int a[8]={8*0};)
2、字符数组:系统对字符串常自动加一个作为结束’\0’标志 (#include<string.h>)
2、假如 a=3,b=4.想要 a 和 b 的值互换,可以用如下赋值语句实现:
a=a^b;
b=b^a;
a=a^b;
(课本 325 页例 12.2 也比较重要)
十一、 文件操作
1、分为 ASCII 文件和二进制文件
文件型指针:FILE *fp;
2、了解常用函数的格式: 打开一个文件:if((fp=fopen(“file1”,r))==NULL)
case 常量表达式 2:switch(表达式 2)语句 2
case 常量表达式 2-语句 2
case 常量表达式 3:switch(表达式 3)语句 3
……
……
case 常量表达式 n-语句 n
case 常量表达式 n:switch(表达式 n)语句 n
default
:语句 n+1
default
:语句 n+1
5、p+i 代表地址计算:p+c*i,c 为字节数 不应把一个整数赋给指针变量,只能将变量的
地址赋给指针变量
十、 位运算
1、如有一个整数 a(2 字节),想要其中的低字节,只需将 a 与八进制数 377 按位与即可,
如想取其高字节,只需 c=a&0177400(0177400 表示八进制数的 177400)
定义:结构体如:struct student {int num;char name[20];}student1,student2; 共用体:union
共用体名{成员表列}变量表列; 空类型:基本型 *指针变量名 如 float *p;
3、C 运算符的种类、运算优先级和结合性 见课本 365 面(很重要)
C 语言精华小结
一、 C 语言结构
1、主函数用 main 作为函数名,每个 C 程序都必须包含且仅含一个 main 函数,C 程序的执 行是从主函数中的第一句开始,到主函数中的最后依据结束 2、头文件的引用#include<name.h>或#include“name.h” 3、函数由函数首部和函数体组成:函数首部,即函数的第一行,包括函数名、函数类型、 函数参数名和参数类型,一个函数后面必须跟一对圆括号;函数体,及函数首部下面的花括 号{}内的部分,如果一个函数内有多个花括号,最外层的一对{}为函数体的范围
3、形参、实参和参数值的传递:参数值传递分为:值传递和传地址。值传递不改变实参的
值,传地址一般是指指针变量作形参(改变实参的值)
4、函数的调用:函数不能嵌套定义,但可以嵌套调用、递归调用
5、静部变量用“static”声明 ,寄存器变量用进行“register”声明 ,外部变量用“extern” 声明,自动变量用“auto”声明,“auto”可省略 ,在函数类型(名)加 extern 表示外部函数
函数,一般形式是:strcat(字符数组 1,字符数组 2);(数组必须足够大)
字符拷
贝函数 strcpy()函Fra Baidu bibliotek,一般形式是:strcpy(字符数组 1,字符串 2); (作用是将字符串 2 复制到
字符数组 1 中去)
字符串比较函数 strcmp()函数,一般形式是:strcmp(字符串 1,
字符串 2)(串 1=串 2,返回 0;串 1>串 2,返回一正整数;串 1<串 2,返回一负整数)
八、 编译预处理
1、宏定义:不带参的一般形式为:#define 标识符字符串
带参的一般形式为:#define
宏名(参数表)字符串
可以用#undef 命令终止宏定义的作用域 宏定义只代换
不分配内存,宏定义不存在类型问题,宏定义不占运行时间,只占编译时间每展开一次都使
程序增长,而函数调用不会使程序变长
2、条件编译的几种形式(1)、# ifdef 标识符 (2)、# ifndef 标识符 (3)、# if 表达式
4、数据转换:自动转化(内存长度低的向高转) 强制转换: 将结果转换成所需要的数
据类型,如;float s=1.23; int a; a=(int)s;
5、 C 表达式类型和求值规则:
赋值表达式:<变量><赋值运算符><表达式> 算术表达式 关系表达式:一般表达式:<
表达式 1><关系运算符><表达式 2>(“真”用 1 表示“假”用 0 表示) 逻辑表达式:一般
else if(表达式 m)语句 m
if(表达式 3)语句 3
else 语句 n
else 语句 4
(注意:else 总是和它上面的最近的未
配对的 if 配对)
2、switch 语句:
(1)、
(2)、switch(表达式 1)
switch(表达式)
{case 常量表达式 1-语句 1
{case 常量表达式 1-语句 1
长双精度型 long double; 字符型:char 结构体:用户定义的一种数据结构,它包含若干个
不同数据类型(当然也可以相同)的数据项,这些数据之间有内在的联系
共用体:使
几个不同的变量共占同一段内存的结构 指针类型:专门用来存放地址的数据类型 空
类型:在定义的时候不确定数据类型,而在使用的时候通过强制转换来确定的数据类型
三、 基本语句
1、简单语句: 空语句: “;”占一个语句位置,但并不执行任何操作
说明语句:
这是对数据和函数进行描述的语句,如定义变量语句、外部变量申明和函数声明等。所有说
明语句都必须放在其他非说明语句(或执行语句)之前
表达式语句:一定要有分号,
分号是语句的一部分 流程控制语句:分为两类:构成流程的控制语句,如 if 语句、switch
执行循环的判定
(2)、break 语句的一般形式是:break; 跳出循环体,即提前结束循环,接着执行循环后面
的语句,break 语句不能用于循环语句和 switch 语句之外的任何其他语句
注:continue 语句只结束本次循环,而不是终止整个循环的执行。而 break 语句则是结束整
个循环,不再判断执行循环体的条件是否成立。
strlen()函数,一般形式是:strlen(字符型指针);(测字符串的实际长度)
七、 函数
1、有参函数的定义:类型标识符 函数名 (形式参数列表)
{ 声明部分
语句
}
“定义”是指对函数功能的确立,包括指定函数函数名、函数类型、形参及其类型、函数体
等,它是一个完整的、独立的函数单位 “声明”的作用则是把函数名、函数类型以及