您的位置:首页 > 编程语言 > C语言/C++

C语言总结(全部)

2015-12-12 13:18 309 查看
第一章 软件开发概述

1.程序语言的发展:机器语言------汇编语言(主要用来做硬件)------高级语言(面向用户的语言;优点:代码效率高,占用内存少;缺点:难写难记。)
2.软件开发的基本步骤:(1)、分析问题,建立数学模型;
(2)、确定数据结构和算法;
(3)、编制程序;
(4)、调试程序。
3.算法的基本特征:有穷性 、确定性 、有效性 、有零个或多个输入 、有一个或多个输出。
4.编码实现:源代码------编译源代码------链接。
5.调试程序可能出现的错误:语法错误 、逻辑错误 、开发错误 、运行时错误 。

第二章 编程语言概述
一 、编程语言的基本组成
1.组成主要有:基本字符集 、标识符 、关键字 、语句和标准函数库。
2.基本字符集包括: 数字字符 、拉丁字母 、运算符 、特殊符号和不可显示字符。
3.标识符:由字母 、数字 或下划线(__)组成,它的第一个字符必须是字母或下划线。C语言还规定(不能用关键字命名),标识符中同一字母的大小写被看做是不同的字符。
4.关键字(学过的部分):int char float else while void switch if struct union return enum continue long goto case default for double sizeof 等
5.语句(关键字和标识符按照一定的语法规则组成语句,语句是组成程序的基本单位。):选择语句(if switch) 、流程控制语句及循环语句(for while do__while)、转移语句(break continue return goto)、表达式语句 、复合语句 、空语句。
6.标准函数库:常用的有:数学函数 、字符函数 和字符串函数 、输入输出函数 、动态分配函数和随机函数。
二 、C语言的基本结构
1.有且只有一个main函数,并且main是所有函数的入口。
2.一个完整的C程序应该符合以下几点:
(1)、C程序是以函数为基本单位,整个程序有函数组成。其中主函数main()是一个特殊的函数,一个完整的C程序至少要有一个切仅有一个主函数,它是程序启动时的唯一入口。除主函数外,C程序还可以包含若干其他C标准库函数和用户自定义的函数。这种函数结构的特点使C语言便于实现模块化的程序结构。
(2)、函数是由说明和函数体两部分构成。函数说明部分包括对函数名 、函数类型 、形式参数等的定义和说明;函数体包括对变量的定义和执行程序两部分,由一系列语句和注释组成。整个函数体由一对花括号括起来。
(3)、语句是由一些基本字符和定义符按照C语言的语法规定组成的,每个语句以分号结束。
(4)、C程序的书写格式是自由的。一个语句可写在一行,也可分写在多行内。一行内可以写一个语句,也可以写多个语句。注释内容可以单独写在一行上,也可以写在C语言的右侧。
三 、C语言的上机执行过程
编辑C源程序------编译C源程序------程序连接------运行程序

第三章 数据存储和输入输出
一 、数据在计算机中的表现形式
1.整数的表示方法:一个字节中只能储存1和0,按照二进制到十进制的转换规则,一个字节只能存储0到128之间的整数。用字节中的最高位来表示正好 、负号(称为符号位,如果符号位为0,则代表正数;如果符号位为1,则代表负数),用其余字节位表示数值。
2.实数的表示方法:浮点数在计算机中是按指数形式存储的,即把一个实型数据分成小数和指数两部分。
3.字符的表示方法:如果一个数据存储在一个字节中,并且是一个0到127之间的数字,那么该数字就是用来表示常用的英文字符。
二 、在编程语言中对数据进行分类
1.C语言中的基本数据类型(书上P34)
2.以下五点对任意计算机平台都是正确的:
(1)、char 的大小为一个字节;
(2)、short 的长度不会超过 long;
(3)、int 的长度不会超过 long;
(4)、unsigned 的长度等于 int;
(5)、float 的长度不会超过 double;
三 、数据在编程语言中的表现形式
1.字面量可分为:整型常量,实型常量,字符常量,字符串常量。
2.字符常量:其定义形式为:#define 标识符 常量
四 、使用变量存储数据
1.变量名:(1)、变量名必须是以字母字符开头;也可以是下划线开头,但是不推荐这样做;
(2)、在变量名中的任意地方都可以使用任何字母 、数字或下划线;
(3)、变量名长度不限;
(4)、变量名不允许出现空格或非字母字符,比如+或-;
(5)、变量名不能是C语言的关键字;
(6)、变量名对大小写敏感。
2.声明变量:其格式为:数据类型声明符 变量名;
注:可以在同一行中声明多个同一类型的变量,只需将变量名用逗号隔开即可。
3.初始化变量(赋值)应注意不要把变量初始化为其他数据类型取值之外的值。
五 、数据的输入与输出
1.格式化输出函数printf:其调用的一般形式:printf(“格式控制字符串”,输出列表)
2.格式字符串的一般形式:[标志] [输出最小宽度] [.精度] [长度] 类型
3.(书本P44)。
4.格式化输入函数scanf:其调用的一般形式:scanf(“格式控制字符串”,地址列表)
注:地址列表中必须有取址符号“ & ”。

第四章 运算符 、表达式和语句
一 、表达式
1.简单表达式:只包含单独的一个操作数:一个简单变量 、字面常量 或符号常量。(字面常量的计算结果等于它本身的值;符号常量的计算结果等于使用#define编译指令定义它时给它指定的值;变量的计算结果等于程序赋给它的当前值。)
2.复杂表达式(含任何一个或多个运算符):表达式之间用运算符连接。
二 、运算符
1.算术运算符:加减乘除 、取模运算符(%)
2.赋值运算符:用“ = ”给变量赋值
3.增量减量运算符:(1)、前缀:++变量(--变量)表示变量在使用前自动加1或减1;
(2)、后缀:变量++(变量--)表示变量在使用后自动加1或减1.
4.关系运算符:==(等于)、!=(不等于)、>(大于)、>=(大于等于)、<(小于)、<=(小于等于)。
注:关系运算符的优先级低于算术运算符,高于赋值运算符。在六个关系运算符中<,<=,>,>=的优先级相同且高于==和!=,而==和!=的优先级相同。
5.逻辑运算符:(1)、逻辑与 &&:如果连接的两个关系表达式的值同时为1,则整个逻辑表达式的值也为1,否则为0.
(2)、逻辑或 ||:连接的两个表达式中只要有一个关系表达式的值为1,则整个表达式的值为1,只有当所有关系表达式的值都为0时,逻辑表达式的值才为0.
(3)、逻辑非 !:使用逻辑运算的关系表达式的值为0时,逻辑表达式的值为1,否则为0。
(4)、逻辑非运算符”!“优先级最高,其次是算术运算符,然后是关系运算符,再次是逻辑与运算符“&&”和逻辑或运算符“||”,最低的是赋值运算符。
6.条件运算符(三目运算符):一般形式:表达式1?表达式2:表达式3
注:若表达式1成立则执行表达式2,否则执行表达式3。
使用条件运算符时应注意以下几点:(1)、条件运算符的优先级高于赋值运算符;
(2)、条件运算符的优先级低于关系运算符和算术运算符;
(3)、条件运算符的结合型是右结合。
7.数据类型强制转换运算符:(1)、自动类型转换;
(2)、强制转换,其一般形式为:(type)表达式
注:type表示一个强制数据类型名。
8.特殊运算符:(1)、长度运算符 “ sizeof ”
(2)、取址运算符 “ & ”
三 、语句
1.控制流程语句:
(1).选择语句:if和switch;
(2).循环语句:for ,while ,do__while;
(3).转移语句:break ,continue ,return 和goto;
2.表达式语句:运算符、变量、常量等可以组成表达式,而表达式后加分号就构成表达式语句。
3.复合语句:用一对大括号括起来的一条或多条语句;复合语句“ } ”后不能出现“ ; ”,而复合语句中最后一条语句的分号不能省略。
4.空语句:假如一条语句只由一个分号组成,那么该语句就称为空语句。空语句表示什么操作也不做,但从语法上讲,它的确是一条语句。
5.赋值语句:其语法形式:变量=表达式;

第五章 选择结构的程序设计
一 、用if语句设计选择结构程序
1.简单 if 语句:
if 语句是实现选择语句最简单、最直观的方法。它最简单的形式就是判断某个条件值是否为真,如果为真,则执行一段代码。简单if语句形式:
if (表达式){
语句1
}
功能:计算表达式的值,若为“真”,则执行语句1;否则将跳过语句1执行 if 语句的下一条语句。
2. if__else 语句 :
一般形式为: if (表达式){
//语句1
}
else {
//语句2
}
功能:计算表达式的值,若表达式的值为“真”,执行语句1,并跳过语句2,继续执行 if__else 语句的下一条语句;若表达式的值为“假”,跳过语句1,执行语句2,然后继续执行 if__else 语句的下一条语句。
3.嵌套的 if 语句:
(1)、嵌套形式1:if (表达式1)
if (表达式2)语句1
else 语句 2
else 语句 3

(2)、嵌套形式2:if (表达式1){
if (表达式2)语句 1
}
else 语句 2

(3)、嵌套形式3:if (表达式1)
语句 1
else if (表达式2)
语句 2
else
语句 3
二 、用switch语句设计多分支结构程序
1.switch 语句:语法形式如下: switch (表达式){
case 常量表达式 1:语句 1
case 常量表达式 2:语句 2
......
case 常量表达式 n:语句 n
default : 语句 n+1
}
说明:1)、switch 后面括号中可以是任何表达式,取其整数部分与各常量表达式进行比较‘。
2)、常量表达式中不能出现变量,且类型必须是整型,字符型或枚举型,各常量表达式互不相同。
3)、语句 i 可以是一条或多条语句,多条语句是不必用 { } 将它们括起来。语句 i 处也可以没语句,程序执行到此会自动向下顺序执行。
4)、default 语句一般出现在所有case 语句之后,也可以出现在case语句之前或两个case语句之间。default 语句可以省略。
2. break 语句:语句调用形式:break ;
功能:终止它所在的switch 语句或循环语句的执行
3.嵌套 switch 语句。
三 、无条件转向语句
1.C语言中的goto语句可以转向同一函数内任意指定位置执行,称为无条件转向语句。
2.goto语句的语法形式如下:
goto 语句标号;
......
语句标号:
功能:goto语句无条件转向语句标号所标识的语句执行。它将改变顺序执行方式。
说明:1)、语句标号用标识符后跟冒号表示。如:
......
goto k ;
......
k :
2)、goto语句与相应的语句标号必须处在同一个函数中,不允许跨两个函数。

第六章 循环结构的程序设计
一 、循环的基本概念
1.当型循环
2.直到型循环
二 、用while 语句设计循环结构程序
用while语句可以设计当型循环结构程序。while语句的语法形式为:
while (表达式)
循环体语句
功能:首先计算表达式的值,若为“真”,则执行循环体语句,执行完毕后,在计算表达式的值,若仍为“真”,则重复执行循环体语句。直到表达式的值为“假”时,结束while语句的执行,继续执行while语句后面的语句。
说明:1)、表达式是控制循环的条件,它可以是任何类型的表达式;
2)、循环体语句语法上定义为一条语句,若循环体含有多条语句,则必须用花括号把它们括起来,成为复合语句;
3)、while 语句的特点是:先判断,后执行。若表达式一开始就为“假”,则循环一次也不执行。
三 、用do_while 语句设计循环结构程序
do_while 语句可以设计“直到型”循环结构程序。do_while 语句的语法形式为:
do {
循环体语句
}while (表达式);
功能:先执行循环体语句,然后检测循环控制条件表达式的值,若为“真”,则重复执行循环体语句,否则退出循环。
说明:1)、do_while 语句的表达式是任意表达式,是控制循环的条件;
2)、do_while 语句的特点是先执行后判断,因此,循环体至少执行一次;
3)、do_while 语句实现的循环与6.1节叙述的“直到”型循环有所不同,它重复执行循环体,直到表达式为“假”才退出循环。
四 、用 for 语句设计循环结构程序
for 语句是C语言中最灵活功能最强的循环语句。for 语句的语法形式如下:
for (表达式1;表达式2;表达式3)
循环体语句
功能:首先计算表达式1的值;然后检测表达式2的值,若其值为“真”,则执行循环体语句。执行完毕后,在计算表达式3。然后,再检测表达式2的值是否为“真”,若为“真”,继续执行循环体语句,......若为“假”,则终止循环。
说明:表达式1通常是为循环变量赋初值的表达式;表达式2 是控制循环的表达式;表达式3 通常是改变循环变量值的表达式。
五 、break 语句和 continue 语句
1.break 语句:
break可以出现在循环语句中,break语句的语法形式为:
break ;
功能:终止它所在的switch语句或循环语句的执行。
说明:break 语句只能出现在switch语句或循环语句的循环体中。
(百位数:n/100;十位数:n/10%10;个位数:n%10)
2.continue 语句
语法形式:
continue;
功能:结束本次循环(不是终止整个循环),即跳过循环中continue语句后面的语句,开始下一次循环。
说明:1)、continue语句只能出现在循环语句的循环体中;
2)、若执行while或do_while语句中的continue语句,则跳过循环体语中continue语句后面的语句,直接转去判别下次循环控制条件;若continue语句出现在for语句中,则执行continue语句就是跳过循环体中continue 语句后面的语句,转而执行 for 语句的表达式3。
3. continue与break的区别:1)、continue语句只能出现在循环语句的循环体中;而break语句既可以出现在循环语句中,也可以出现在switch语句中。
2)、break语句终止它所在的循环语句的执行;而continue语句不是终止它所在的循环语句的执行,而是结束本次循环,并开始下一次循环。
六 、几种循环语句的比较
1. for 语句和 while 语句先判断循环控制条件,后执行循环体;而 do_while 语句 是先执行循环体,后进行循环控制条件的判断。for 语句和while语句可能一次也不执行循环体;而do_while 语句至少执行一次循环体。for和do_while 循环属于“当型”循环;而do_while 循环属于“直到型”循环。
2.do_while 语句和while语句多用于循环次数不定的情况。对于循环次数确定的情况,使用for语句更方便。
七 、编写循环体时应注意以下几点:1)、确定循环体内包含一个语句使用循环体最终结束;
2)、确定循环体正确的循环次数;
3)、如果想执行循环体N次,那么就让初始化计数器counter为0,使用测试条件counter < N;或者让初始化计数器counter为 1 ,使用测试条件counter <=N。

第七章 数组和字符串
一 、数组的基本概念
所谓数组,就是按照一定顺序排列,具有某种相同性质的同种类型的集合。这些变量具有相同的名字和数据类型,在内存中顺序排列,并通过下标相互区分,所以也叫下标变量。数组中的各数据项称为数组元素,用数组名和下标表示。
二 、一维数组
1.一维数组的定义:定义一维数组的形式为:数据类型 数组名 [整型常量表达式];
说明:1)、数据类型是数组中全体数组元素的数据类型;
2)、数组名用标识符表示,整型常量表达式代表数组具有的数组元素个数;
3)、数组元素的下标一律从0开始;
4)、编译程序为数组开辟连续的存储单元,用来顺序存放数组的各数组元素。用数组名表示该数组存储区的首地址。
2.一维数组的引用:引用数组,实际上是引用它的数组元素。引用数组元素的形式为:数组名 [下标表达式]
注意:1)、定义时整型常量表达式与引用时的数组元素的下标表达式是完全不同的概念。
2)、系统不检查数组元素下标是否越界,只能由编程者自己掌握。下标越界会破坏其它变量的值,因此编程时一定要保证数组元素下标不越界。
3.一维数组的初始化:变量可以初始化,一维数组也可以在定义的同时为各数组元素赋初值。一维数组初始化的形式为:数据类型 数组名 [整型常量表达式]={初值1,初值2,......};
三 、二维数组
1.二维数组的定义:数据类型 数组名 [整型常量表达式] [整型常量表达式] ,......
数据类型是数组全体数组元素的数据类型;数组名用标识符表示;两个整型常量表达式分别代表数据具有的行数和列数。数组元素的下标一律从0开始。
2.二维数组的引用:数组 [行下标表达式] [列下标表达式]
3.二维数组的初始化:数据类型 数组名 [整型常量表达式] [整型常量表达式] = {初始化数据};
四 、字符数组与字符串
每个字符占用一个字节,并在末尾添加‘\0'作为终结标记。

第八章 复杂数据类型
一 、结构类型
1.结构体类型的声明:
struct 结构名 {
数据类型1 成员名1 ;
数据类型2 成员名2 ;
......
数据类型n 成员名n;
};//分号是必须的
2.声明结构体类型的变量
struct 结构名 结构变量1,结构变量2,......结构变量n;
3.访问结构体变量的成员:结构变量名 . 成员名
二 、共用体
1.共用体的类型声明和变量定义的语法形式为:
union 共用名 {
数据类型 成员名;
数据类型 成员名;
...
}共用体变量名;
2.使用共用体类型数据时要注意以下几点:1)、同一内存段可以用来存放几种不同类型的成员,但是某一时刻只能存放其中一种。也就是说,在某一瞬间只有一个成员起作用。
2)、共用体变量中起作用的是最后一个存放的成员,在存入一个新成员后,原有的成员就失去了作用。
3)、共用体变量的地址和其成员地址都是同一地址。
4)、不同对共用体变量赋值,也不能在定义共用体变量时对其初始化。
三 、枚举类型
enum 枚举名{

标识符[=整型常数],

标识符[=整型常数],

......

标识符[=整型常数],

};

注:当枚举中的某个成员赋值后,其后的成员按依次加1的规则确定其值。

四 、指针类型

1.指针的概念:指针也称指针变量,其内容存储了另一个变量的内存地址。

2.声明指针类型的变量:指向的变量的类型名 * 指针变量名 ;

注:指针变量的类型是“指向的变量的类型名 * ”,而不是“指向的变量的类型名”。

3.只有地址才能存在指针中。

第九章 函数
一 、函数的分类
1.分为标准库函数和用户自定义函数。
2.函数的定义:函数的定义就是写出函数的全部内容来,即完成函数功能的程序块,它的一般格式为:
函数类型 函数名称(形式参数表){
说明语句序列
可执行语句序列
}
二 、函数的参数
1.无参函数:在调用无参函数时,主调函数不将数据传递给被调用函数,无参函数可以带或不带返回值。
2.有参函数:在调用函数时,在主调函数和被调函数之间有数据传输。也就是说,主调函数可以将数据传递给被调函数使用,被调函数中的数据也可以带回供主调函数使用。
三 、函数的返回值
1.无返回值的函数:即void函数。无函数值的函数,一般用来执行指定的一组,类似于其他高级语言中的过程。
2.有返回值的函数:调用函数后,可以通过函数名带回函数值供主调函数使用。

完!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: