c++期末总复习-精华篇
c语言期末知识点总结
c语言期末知识点总结c语言考试很难,要伙伴们不要挂科哦。
以下是小编为大家整理的c语言期末知识点总结,希望大家能喜欢。
总体上必须清楚的:1)程序结构是三种:顺序结构,循环结构(三个循环结构),选择结构(if 和switch)2)读程序都要从main()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式.数据存放的位置就是他的地址.4)bit是位是指为0或者1。
byte是指字节,一个字节=八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是c语言的一部分,不再运行时间。
c语言编译的程序称为源程序,它以ascii数值存放在文本文件中。
2、每个c语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
4.1数组的概念1.问题的提出假设我们将26个数分别存放在26个变量中,要计算26个变量的和,如何做?将26个变量逐个加起来?能否使用循环语句?for(sum=0,i=0;i<26;i++)sum=sum+i;正确吗?2.使用数组解决问题(掌握)定义一个变量,包含26个数据,称为数组变量。
main(){inti,sum=0,a[26];for(i=0;i<26;i++)scanf(“%d”,&a[i]);for( i=0;i<26;i++)sum=sum+a[i];printf("%d"sum);}c语言为这些数据,提供了一种构造数据类型:数组。
所谓数组就是一组具有相同数据类型的数据的有序*。
这些数据被称为数组的元素。
4.2一维数组的定义和引用4.2.1一维数组的定义1、定义一维数组的一般方式:类型说明符指明数组元素的数据类型数组名[常量表达式];指明数组所含的元素个数,下标从0开始常量表达式说明数组元素的个数,必须是大于0的整型常量表达式(包括常量和符号常量)。
c语言期末总复习
总复习课程的全部内容可分为五大模块:(1)基础知识(2)三种基本结构及流程控制(3)函数(4)数据类型(5)文件模块一:基础知识部分需要掌握的知识要点:(1)冯·诺依曼体系结构的计算机组成:运算器、控制器、存储器、输入设备、输出设备,以及各部分的主要功能。
(2)C语言程序的组成:由一个或多个文件组成,每个文件由一个或多个函数组成,函数是C程序的基本单位,一个程序有且只有一个main( )函数,这是程序的入口函数(3)从C的源程序到可执行的文件的全过程:编辑、编译、链接最后才能运行,各阶段生成的文件扩展名分别为:.c、.obj、.exe,头文件的扩展名:.h(4)函数的组成:函数首部和函数体,函数中可有注释行/* …*/(5)编译预处理有三种:文件包含、宏、条件编译:预处理命令行都必须以“#”号开始宏定义#define宏名串也是一种编译预处理,取消宏定义用:#undef 宏名C程序中定义一个符号常量是借助于宏定义实现的,例如: #define NUM 35注意:不在行末加分号,因为在对源程序编译过程中(不是运行时)进行宏替换时,将宏所代表的字符串原样替换进去,有时加了分号是要出错的,例如: int arr[NUM];宏替换因为只在编译时进行,所以不占运行时间,只占编译时间带参数的宏可以完成一些简单函数的功能,例如:#define MUL(x,y) x*y主函数中如果有变量定义如下:int a=2,b=3,c;用形如:c= MUL(a,b);实现求a、b 的乘积。
但是请大家思考,如果用c= MUL(a+2,b+5),则变量c的值为?因此,一般将宏中的参数在所定义的串中打上括号,如:#define MUL(x,y) (x)*(y)再求c= MUL(a+2,b+5)(6)C程序中的六种符号:关键字、标识符、运算符、分隔符、其它符号、数据(包括常量和变量)熟记所有常见关键字,关键字中最多的是流程控制语句中的关键字,如:for、while、do、if、else、switch、case、default、break、continue、goto、return等,还有一大类是变量类型及存储类别的,如:int、short、long、signed、unsigned、char、double、float、enum、union、struct、typedef、static、register、auto、extern,还有一些如:void 、sizeof 等;能正确定义标识符(在程序中,符号常量名、变量名、函数名都是用户自定义标识符),自定义标识符的正确与否可从以下几方面判断:①是否以字母或下划线开头;②是否是只有字母、数字、下划线的序列③是否选用了关键字练习:下列哪一个是合法的用户自定义标识符______。
C语言期末复习知识点
C语言期末复习知识点C语言是一门广泛应用于编程领域的高级程序设计语言。
掌握C语言的基础知识对于理解其他编程语言和进行程序设计非常重要。
下面将介绍C语言期末复习的一些重要知识点。
1.数据类型:C语言提供了多种数据类型,包括整型、浮点型、字符型和指针等。
这些数据类型在内存中占用的空间大小是不同的,因此在使用时需要合理选择。
例如,int类型通常用于表示整数,float用于表示浮点数,char 用于表示字符。
2.变量和常量:在C语言中,变量用于存储数据,而常量是具有固定值的标识符。
声明变量时需要指定其类型,并且可以对变量进行赋值。
常量可以通过const关键字来声明,并且在声明时就需要为其赋值。
3.运算符:C语言提供了多种运算符,包括算术运算符、关系运算符、逻辑运算符和位运算符等。
了解这些运算符的优先级和使用方法对于编写复杂的表达式和条件语句非常重要。
4.控制语句:C语言的控制语句包括条件语句和循环语句。
条件语句用来根据条件的真假来执行不同的代码块,包括if语句、switch语句等。
循环语句用来重复执行其中一段代码,包括for循环、while循环和do-while循环等。
5.函数:函数是C语言中的基本模块,用于实现特定的功能。
在函数定义中需要指定函数的返回类型、函数名和参数列表,并在函数体中编写具体的代码。
通过函数的调用可以执行相应的功能。
6.数组和指针:数组和指针是C语言中非常重要的概念。
数组用于存储一组相同类型的数据,可以通过下标来访问数组中的元素。
指针是一个变量,它存储了一个内存地址。
通过指针,可以访问和修改内存中的数据。
7.结构体和联合体:结构体和联合体用于组织多个不同类型的数据。
结构体可以将多个不同类型的变量组合成一个整体,方便对这些变量进行管理。
联合体是一种特殊的结构体,它可以在相同的内存空间中存储不同类型的数据。
8.文件操作:C语言提供了用于文件操作的函数,例如打开文件、读写文件和关闭文件等。
c语言期末知识点总结
C语言期末知识点总结1. 指针指针是C语言中非常重要的概念。
它是一个变量,用来存储内存地址,通过指针可以操作内存中的数据。
使用指针可以实现更高效的内存管理和数据操作。
以下是指针的主要知识点: - 指针的声明和初始化 - 指针的运算(例如,指针的加法和减法) - 指针的解引用操作(通过指针访问内存中的数据) - 指针的比较(例如,指针的大小比较)2. 动态内存分配动态内存分配是程序运行时根据需要分配内存的一种方式。
在C语言中,可以使用标准库函数malloc和free来实现动态内存分配。
以下是动态内存分配的常用知识点: - malloc函数用于分配内存,返回值为指向分配内存的指针 - 使用动态分配的内存后,要记得使用free函数释放内存 - 可以使用sizeof关键字获取数据类型的大小,方便分配内存3. 结构体和联合体结构体和联合体是C语言中用于组织和管理不同类型数据的重要机制。
结构体允许将多个不同类型的数据组合成一个整体,而联合体只能同时存储一个成员。
以下是结构体和联合体的主要知识点: - 结构体的定义和初始化 - 使用.运算符来访问结构体中的成员 - 联合体的定义和初始化 - 使用union关键字设置联合体当前使用的成员4. 文件操作在C语言中,可以通过文件操作来读取和写入文件。
文件操作是处理文件数据的重要手段。
以下是文件操作的主要知识点: - 使用FILE类型的指针来操作文件 - 使用fopen函数打开文件,并返回一个指向FILE类型的指针 - 使用fclose函数关闭文件 - 使用fread和fwrite函数读写文件数据 - 使用fseek函数设置文件指针的位置5. 函数指针函数指针是指向函数的指针。
这样可以将函数作为参数传递给其他函数或者将函数作为返回值。
以下是函数指针的主要知识点: - 函数指针的声明和初始化 - 使用函数指针调用函数并传递参数 - 可以使用函数指针作为参数来实现回调函数6. 递归递归是一种算法设计技术,指在算法中自己调用自己。
计算机期末考试复习资料 C语言复习
C语言复习第一章:总结:(1) C程序是由函数构成的。
这使得程序容易实现模块化。
(2) 一个函数由两部分组成:函数的首部:例1.3中的max函数首部int max(int x,int y )函数体:花括号内的部分。
若一个函数有多个花括号,则最外层的一对花括号为函数体的范围。
函数体包括两部分:声明部分:int a,b,c; 可缺省执行部分:由若干个语句组成。
可缺省注意:函数的声明部分和执行部分都可缺省,例如:void dump ( ){}这是一个空函数,什么也不做,但是合法的函数(3) C程序总是从main函数开始执行的,与main函数的位置无关。
(4) C程序书写格式自由,一行内可以写几个语句, 一个语句可以分写在多行上,C程序没有行号。
(5) 每个语句和数据声明的最后必须有一个分号。
(6) C语言本身没有输入输出语句。
输入和输出的操作是由库函数scanf和printf 等函数来完成的。
C对输入输出实行“函数化”第二章:算法的特性1.有穷性:一个算法包含有限的操作步骤2.确定性:算法中的每一个步骤是确定的,含义是唯一的3.有零个或多个输入4.有一个或多个输出5.有效性:算法中每一个步骤应能有效运行三种基本结构顺序结构、选择结构、循环结构第三章:一、数据类型1.标识符(identifier)定义:用来标识变量、常量、函数等的字符序列组成: 只能由字母、数字、下划线组成,且必须是字母或下划线开头,C 语言中大小写敏感(如count ,Count ,COUNT 是三个不同的标识符。
)不能使用关键字长度:最长32个字符命名原则:见名知意 不宜混淆 如l 与I, o 与0 顺序结构选择结构当型(While 型)循环结构直到型(Until 型)循环2.常量定义:程序运行时其值不能改变的量(即常数)分类:(符号常量,直接常量)符号常量:用标识符代表常量定义格式:#define3.变量概念:其值可以改变的量变量名与变量值变量定义的一般格式:数据类型变量1[,变量2,…,变量n];二、整型变量的分类:分为四种:基本型、短整型、长整型、无符号型1.基本型:用“int”表示2.短整型:用“short int”或“short”表示3.长整型:用“long ”或“long int ”表示4.无符号型:(修饰符:unsigned)不存放符号,则不带符号数.又分无符号整型,无符号短整型, 无符号长整型。
C语言程序设计期末复习
C语言程序设计期末复习
一、基础知识
1、变量和运算符
变量就是程序中用来保存信息的抽象容器,可以用来记录用户输入、
程序执行时间以及中间结果等信息
C语言允许使用者定义变量,分为基本类型变量和指针变量。
其中基本类型变量有:整型int,浮点型float,字符型char,双精
度型double,无符号整型unsigned等。
运算符是对变量进行运算的符号,C语言中的运算符大致可分为三大类:算术运算符,关系运算符和逻辑运算符。
其中算术运算符包括:+、-、*、/和%;关系运算符包括:>、>=、<、<=、==和!=;
逻辑运算符包括:&&,和。
2、流程控制
程序的流程控制是应用程序中最重要的结构,在C语言中可以通过控
制语句来控制程序的执行流程。
常用的控制语句有:if、goto、while、for、switch-case等。
if语句可以根据执行条件跳过执行部分语句,节省程序执行的时间。
goto语句可以跳转到指定的语句,实现循环执行流程。
while语句可以不固定有多少次操作,根据执行条件决定是否继续执行。
for语句可以更精确的表示循环次数,避免无意识的多次循环操作,从而提高程序运行效率。
switch-case语句可以根据变量的变化值,执行不同的操作,实现复杂的逻辑判断。
3、函数。
C语言程序设计期末总复习
C语言程序设计期末总复习一、基本概念※所谓词法记号,是指程序中具有独立含义的不可进一步分割的单位,具体地说,C语言的词法记号可分成5类:关键词、标识符、常量、运算符、分隔符。
※关键词是C语言中预定义的符号,他们有固定的含义,用户所定义的任何名字都不得与它们冲突。
※标识符是用户自行定义的符号。
用来标识常量、变量、函数、标号等。
C语言要求,所有标识符必须先定义/说明后使用。
ANSI规定,标识符是由字母或下划线(_)开头,后跟零个或多个字母、下划线和数字中任何一个符号所组成的符号序列。
※C语言是区分大小写的,因此,int是关键词,而Int则是标识符。
※分隔符用于分隔各种词法记号,常用的分隔符有:[] () {} * . : = ; #。
※C语言中,为解决具体问题,要采用各种类型的数据,数据类型不同,它们所能表达的数据范围、精度和所占据的存储空间均不相同。
※有符号整数在内存中以补码表示,其最高位为1时表示负数,最高位是0时表示非负数。
※浮点型用来表示实型数据。
浮点型分为两种:单精度和双精度,分别以float和double表示。
※字符型用char表示,一般用8位来存放一个字符,实际上存放的是该字符的ASCII码值。
在整型常数后跟有字母l或L时,表示该整型常量是长整型常量。
※字符型常量是用单引号括起来单一字符,一个字符常量的值就是该字符的ASCII码值。
※字符串常量是双引号括起来的零个、一个或多个字符的序列。
编译程序自动地在每一个字符串末尾添加串结束符’\0’。
一个字符串常量在程序正文中出现,即代表此字符串常量的首地址。
※一个变量由一个名字来标识,变量在内存中占据一定的存储单元,该存储单元存放变量的值。
变量名与内存中的某一存储单元相联系,而变量值是指存放在该存储单元的数据的值。
变量被说明后,根据其类型的不同,拥有大小不同的存储单元。
没有定义/说明的变量,就没有存储单元,因而不能使用。
※对于除法运算符(‘/’),若除数和被除数均为整数,则商只取整数部分,舍弃小数部分,如6/4=1;而若除数或被除数中,只要有一个为实数,则结果是double型的。
c期末考点总结
c期末考点总结C语言是一门非常重要的编程语言,是许多计算机科学与软件工程专业的基础必修课。
期末考试是对学生学习成果的一次综合性考核,下面将总结C语言期末考点,帮助大家复习备考。
一、基础知识1. 数据类型:包括基本类型和派生类型,如int、float、char、数组、结构体等。
2. 变量和常量:如何定义变量、常量,变量的作用域和生命周期。
3. 运算符:算术运算符、关系运算符、逻辑运算符、位运算符等,以及它们的优先级和结合性。
4. 控制语句:条件语句(if-else、switch)、循环语句(while、do-while、for)。
5. 输入输出:如何从键盘获取输入,如何将数据输出到屏幕上。
6. 函数:如何定义函数、函数的参数传递和返回值。
7. 数组:如何定义和使用数组,多维数组。
8. 字符串:如何定义和使用字符串,字符串的处理函数。
9. 指针:如何定义和使用指针,指针与数组的关系。
10. 结构体和联合体:如何定义和使用结构体、联合体,结构体和指针的关系。
二、高级知识1. 动态内存分配:如何使用malloc、calloc、realloc函数进行动态内存分配和释放。
2. 文件操作:如何打开、读写、关闭文件,文件的定位指针。
3. 预处理器:如何使用宏定义、条件编译、文件包含等预处理指令。
4. 头文件:如何编写自定义的头文件并使用。
5. 递归:如何使用递归解决问题,递归的实现原理。
6. 指针与函数:如何使用指针作为函数参数,指针函数、指针数组、指针指针等。
7. 指针与字符串:如何使用指针处理字符串,字符串函数的实现。
8. 指针与结构体:如何定义指向结构体的指针,指针访问结构体成员。
9. 指针与动态内存分配:如何动态分配结构体指针,释放动态分配的内存。
10. 文件操作与结构体:如何将结构体数据保存到文件,从文件读取结构体数据。
三、综合应用期末考试通常会出一些综合性的编程题,要求学生综合运用所学知识进行程序设计。
C语言期末总复习(全)!
一、选择题(共22分)1.下列变量名中合法的是____ 。
A) B.C.Tom B) 3a6b C)_6a7b D) $ABC2.C程序的执行是从____开始执行A)第一条语句B)主函数C)命令行D)第一个出现的函数3.已知ch是字符型变量,下面不正确的赋值语句是____。
A)ch=‘a+b’; B) ch=‘\0’; C)ch=‘7’+‘9’; D)ch=5+94. 与语句 while(x);等价的语句是______。
A) while(x==0);B) while(x!=0);C) while(x!=1); D) while(~x);5. 已知 int i;float f;下列语句正确的是______。
A)(int f)%i B) int(f)%i C) int(f%i) D) (int)f%i6.若int a[10]={1,2,3,4,5,6,7,8,9,10},*p=a;,则数值为6的表达式为_____ 。
A) *(p+6) B)*p+6 C)*p+=5 D)p+67.以下为一维整型数组a的正确说明是_________.A)int a(10); B)int n=10,a[n];C)int n; D)#define SIZE 10scanf("%d",&n); int a[SIZE];int a[n];8.温度华氏和摄氏的关系是: C=5/9(F-32)。
已知:float C,F;由华氏求摄氏的正确的赋值表达式是____。
A)C=5/9(F-32) B)C=5*(F-32)/9 C)C=5/9*(F-32) D)三个表达式都正确9.若有以下说明和语句:struct worker{ int no;char *name;}work, *p=&work;则以下引用方法不正确的是____。
A) work.no B)(*p).no C)p->no D)work->no 10.为了判断两个字符串s1和s2是否相等,应当使用____。
C程序设计期末复习知识点
C程序设计期末复习知识点1.C语言基础-了解C语言的历史和发展。
-了解C语言的特性,例如:面向过程、可移植性、高效性等。
-理解C语言的编译过程,包括预处理、编译、汇编和链接。
-掌握C语言的基本语法,包括变量定义、标识符命名规则、注释、运算符等。
2.数据类型-理解C语言的基本数据类型,包括整型、浮点型、字符型和布尔型。
-知道各种数据类型的取值范围和存储大小。
-理解数据类型之间的转换规则。
3.控制结构- 掌握条件语句,包括if语句、switch语句。
- 掌握循环结构,包括for循环、while循环和do-while循环。
- 了解循环控制语句,包括break和continue语句。
4.数组和指针-理解一维和多维数组,包括如何定义、初始化和访问数组元素。
-掌握指针的概念,包括如何定义和使用指针变量。
-理解指针和数组的关系,包括指针和数组之间的相互转换。
5.函数-理解函数的概念和作用,包括函数的定义、声明和调用。
-理解参数传递的方式,包括传值和传引用。
-理解局部变量和全局变量的作用域和生命周期。
-理解递归函数的原理和应用。
6.文件操作-了解文件的概念和类型。
-掌握文件的打开、关闭、读取和写入操作。
-知道如何创建文件、删除文件和改变文件属性。
-理解文件指针的使用,包括定位文件读写位置等。
7.结构体和联合体-理解结构体的概念,包括如何定义和使用结构体。
-掌握结构体成员的访问方式。
-了解联合体的概念和用途。
-知道结构体和联合体的区别。
8.动态内存分配- 了解动态内存分配和释放的方法,包括malloc、calloc和realloc函数。
-理解内存泄漏和内存溢出的概念和原因。
-知道如何使用指针来管理动态分配的内存。
9.字符串处理-理解字符串的概念,包括如何定义和使用字符串变量。
- 掌握字符串的输入和输出操作,包括fgets、fputs和printf函数。
- 掌握字符串的处理函数,包括strlen、strcpy、strcat、strcmp 等。
C语言期末考试全部知识点复习资料--重点--常考点-整理.doc
一般转义字符:背诵\0、\n 八进制转义字符: 十六进制转义字符:'\x6cl ,\b 将当前位置移到前一列\n 将当前位置移到下一行开头\t 跳到下一个TAB 位置 \\代表一个反斜线字符'’\,\〃代表一个双引号字符\0空字符(NULL )1. 程序屮基本的控制结构是三种:顺序结构、选择结构(分支结构)、循环结构。
2. 读程序都要从main ()入口,然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择),有且只有一个main 函数。
3. 计算机的数据在电脑中保存是以二进制的形式。
数据存放的位置就是它的地址。
4. bit 是位,是指为0或者1。
byte 是指字节,一个字节二八个位。
5. 编译预处理不是C 语言的一部分,不占运行时间,不要加分号。
(常考!)^define PI 3. 1415926; 这个写法是错误的,一定不能出现分号。
6. 每个C 语言程序中main 函数是有且只有一个。
7. 用C 语言编写的程序称为源程序,扩展名是.co C 程序必须经过编辑、编译、链接、运行四个步骤才可得到运行 结果。
注意.c 和.obj 文件时无法运行的,只有.exe 文件才可以运行。
(常考!)8. C 语言书写格式是自由的,每行可以写多个语句,一条语句也可以写在多行。
9. 一个C 语言程序有且只有一个main 函数,是程序运行的起点。
10. Cfree 、VC/VC++、CodeBlock 等是软件,用来运行写的C 语言程序。
(编译环境)11. 标识符(必考内容):合法的要求是由字母,数字,下划线组成。
并且第一个必须为字母或则是下划线。
第一个为数字就错了12. 标识符分为关键字、预定义标识符、用户标识符。
关键字:不可以作为用户标识符号。
main 、define 、scanf> printf 都不是关键字。
迷惑你的地方是If 、Main 等可以做为用户标识符。
If 、Main 中的第一个字母大写预定义标识符:如define 、scanfs printf> include 。
C程序设计期末复习知识点
C程序设计期末复习知识点C语言程序设计是计算机科学中一门重要的编程语言,下面是C程序设计的一些复习知识点。
1.数据类型:C语言中有基本数据类型和派生数据类型。
基本数据类型包括整型、浮点型、字符型和布尔型。
派生数据类型包括数组、结构体和指针。
2. 变量和常量:变量是用来存储数据的,常量是不可变的数据。
变量在使用前需要声明,可以通过定义来初始化。
常量可以使用关键字const来声明。
3.运算符:C语言中有算术运算符、关系运算符、逻辑运算符、位运算符等。
算术运算符包括加减乘除和取余等。
逻辑运算符用于布尔逻辑运算,位运算符用于对二进制位进行操作。
4. 控制流语句:C语言中有顺序结构、分支结构和循环结构三种控制流语句。
分支结构包括if语句、switch语句,循环结构包括while循环、do-while循环和for循环。
5.函数:C语言中使用函数来封装一段可重用的代码。
函数包括函数声明和函数定义两部分。
可以有参数和返回值。
6.数组:C语言中的数组是一种派生数据类型,用来存储一系列相同类型的数据。
数组的元素可以通过下标来访问。
7. 字符串:C语言中的字符串是以null字符('\0')结尾的字符数组。
可以使用标准库函数来进行字符串的操作,如strlen、strcpy、strcat等。
8.指针:C语言中的指针用来存储变量的地址。
可以使用指针来改变变量的值,也可以通过指针来访问数组的元素。
9.结构体:C语言中的结构体是一种自定义的数据类型,用来将不同类型的数据组织在一起。
结构体可以包含基本数据类型和其他结构体类型。
10.文件操作:C语言中可以通过文件操作来读取和写入文件。
可以使用标准库函数来打开、关闭、读取和写入文件。
以上是C语言程序设计的一些重要知识点,希望能对你的期末复习有所帮助。
如果还有其他问题,可以继续提问。
C语言基础知识总复习(精华浓缩+考前突击必备)
C语言基础知识总复习(精华浓缩+考前突击必备)总体上必须清楚的:1)程序结构是三种: 顺序结构, 循环结构(三个循环结构), 选择结构(if 和switch)2)读程序都要从main()入口, 然后从最上面顺序往下读(碰到循环做循环,碰到选择做选择)。
3)计算机的数据在电脑中保存是以二进制的形式. 数据存放的位置就是他的地址.4)bit是位是指为0 或者1。
byte 是指字节, 一个字节= 八个位.5)一定要记住二进制如何划成十进制。
概念常考到的:1、编译预处理不是C语言的一部分,不再运行时间。
C语言编译的程序称为源程序,它以ASCII数值存放在文本文件中。
2、每个C语言程序中main函数是有且只有一个。
3、在函数中不可以再定义函数。
4、算法的是一定要有输出的,他可以没有输入。
5、break可用于循环结构和switch语句。
6、逗号运算符的级别最低。
第一章1)合法的用户标识符考查:合法的要求是由字母,数字,下划线组成。
有其它元素就错了。
并且第一个必须为字母或则是下划线。
第一个为数字就错了。
关键字不可以作为用户标识符号。
main define scanf printf 都不是关键字。
迷惑你的地方If 是可以做为用户标识符。
因为If中的第一个字母大写了,所以不是关键字。
2)实型数据的合法形式:2.333e-1 就是合法的,且数据是2.333×10-1。
考试口诀:e前e后必有数,e后必为整数。
.3)字符数据的合法形式::'1' 是字符占一个字节,"1"是字符串占两个字节(含有一个结束符号)。
'0' 的ASCII数值表示为48,'a' 的ASCII数值是97,'A'的ASCII数值是65。
4)整型一般是两个字节, 字符型是一个字节,双精度一般是4个字节:考试时候一般会说,在16位编译系统,或者是32位系统。
碰到这种情况,不要去管,一样做题。
C语言程序设计期末总复习
什么叫地址?什么叫指针?什么叫指向?什么叫变量的指针?什么
叫指针变量?什么叫函数的指针?什么叫数组的指针?什么叫指针 数组?什么叫指针的指针? 用指针方法处理,输入5个整数,按由小到大的顺序输出? 有n个人围成一圈,顺序排号。从第一个人开始报数(从1到3报 数),凡报到3的人退出圈子,问最后留下的是原来第几号的那位? 写一个函数,将一个3x3的整型二维数组转置,及行列互换。
第六章 数组
本章主要内容: 本章主要讲解了一维数组的定义和引用、二维数组的定 义和引用、字符数组的初始化、字符串结束标志、字符数 组的输入输出、字符串处理函数puts()、gets()、strcat()、 strcpy()、strncpy()、strcmp()、strlen()、strlwr()、 strupr()。
本章必须掌握的知识点: 什么叫数组?C语言如何使用数组? 什么是起泡法?什么是筛选法? 用筛选法求100之内的素数? 用选择法对10个整数排序? 求3x3的整型二维数组对角线元素之和。
第七章 函数调用
本章主要内容: 本章主要讲解了函数的一般定义形式、函数参数和函数的值、 函数的调用、函数的嵌套调用、函数的递归调用、数组元素作为 函数参数、局部变量和全局变量变量的存储方式和生存期、关于 变量的声明和定义、内部函数和外部函数。
第二章 数据类型、运算符与表达式
本章主要内容: 本章主要讲解了C语言的数据类型、常量和变量、各类数值 型数据间的混合运算、算术运算符和算术表达式以及运算符的 优先级与结合性、逗号运算符和逗号表达式。 本章必须掌握的知识点: C语言有哪些数据类型? 什么是常量?什么是字符常量?什么是变量?什么是字符变量? 什么是算术运算符?什么是算术表达式? 什么是强制类型转换?什么是自增、自减运算? C语言为什么规定所有的变量必须要“先定义,后使用”?
c语言期末复习内容
C语言期末复习第一章:概述1、C语言程序总是从main()函数开始执行,main()可出现在程序的任意位置。
2、注释内容不参与编译3、一行上可以放一条语句或多条语句4、构成c程序的基本单位是函数5、C语言标示符原则,判断合法的标示符(注意关键字不是合法的标示符)第二章:数据类型、运算符表达式1、c语言中最简单的数据类型:整型、实型、字符型2、算术运算符:%、/ :例如15%4/7=?3、++、--运算符:例如:int i=5; ++i的值?放变量前和变量后的区别:例如:(1)int n=0;while (n++<=2); printf("%d",n);(2)void main(){int i,j,k=0;for(i=1;i<=5;i++){j=i%2;while(--j>=0) k++;}printf("%d,%d",j,k);}输出结果是多少?4、复合的赋值运算符:+=、*=、-=x+=a/b等价于什么?int a=6; 求表达式a+=a-=a*a的值第三章:基本输入输出语句1、C语言本身没有输入输出语句2、scanf()输入语句格式:(1)当输入数据的形式为25,13,10<CR>正确的输出结果为main(){ int x,y,zscanf("%d%d%d",&x,&y,&z );printf(“x+y+z=%d\n”,x+y+z);。
}(2)要通过语句scanf(“%d%d%d”,&a,&b,&c); 给a赋值于3,b赋值于4,c赋值于5,正确的输入方式?3、求圆的面积和周长?第四章:选择结构1、C语言中关系逻辑表达式的书写:判断char型变量ch是否为大写字母的正确表达式是?2、if语句执行顺序:a=1,b=7,c=5,if语句if(a>c) b=a;a=c;c=b; 执行完后a,b,c的值分别是多少?3、实验指导书上面的顾客购物打折4、输入两个数由小到大输出第五章:循环结构1、do…..while语句与for、while语句在执行顺序上的区别2、while语句:设有程序段int k=10; while (k=0) k=k-1;循环体执行次数?例题:(1)求n的阶乘;(2) 从键盘输入的一组字符中统计出大写字母的个数m和小写字母的个数n,并输出m、n中的较大者(使用条件表达式m>n?m:n);(3)从键盘输入学号(学号为三位数),然后输出学号中百位数字是5的学号,输入0时结束循环。
C语言期末考试复习要点
期未考试复习题型分布:※单项选择(10×2分)※程序填空(20×2分)※程序改误(8×2分)※编程(2×12分)一.C语言标识符二.表达式三.选择: if~else / switch~case/break 四.循环: do while / while / for五.数组: 定义、初始化二维字符串处理六.指针:定义、运算、初始化、引用七.函数:定义、数据传递、宏八.全局与局部变量:存储类型、寿命、作用域九.结构:定义引用一○.文件:文件结构指针打开读写关闭一、C 语言的结构程序的构成,main 函数和其他函数头文件、数据说明、函数的开始和结束标志源程序的格式和结构特点掌握C 语言标识符二、数据类型及其运算C 的数据类型(基本类型、构造类型、指针类型、空类型)及其定义方法C 运算符的种类、运算优先级和结合性不同类型数据间的转换与运算C 表达式类型(赋值表达式、算术表达式、关系表达式、逻辑表达式、条件表达式、逗号表达式)和求值规则三、流程控制表达式语句,空语句,复合语句数据的输入与输出,输入输出函数的调用复合语句例:if (a==b)if(b==c)printf(“a==b==c”);else printf(“……”);四、选择结构程序设计用if 语句实现条件选择结构用switch 语句实现等值选择结构选择结构的嵌套 if (expL) statement1;else statement2;五、循环结构程序设计for 循环结构while 和do whi1e 循环结构continue 语句和break 语句循环的嵌套六、数组的定义和引用一维数组的定义、初始化和引用二维数组的定义、初始化和引用字符数组的定义、初始化和引用字符串处理七、指针指针与指针变量的概念与运算变量、数组、字符串、函数、结构体的指针以及指向变量、数组、字符串、函数、结构体的指针变量。
通过指针引用以上各类型数据用指针作函数参数返回指针值的指针函数指针数组,指向指针的指针八、函数库函数的正确调用函数的定义方法函数的类型和返回值形参与实参的数据传递函数的正确调用,嵌套调用局部变量和全局变量变量的存储类别(自动,静态、寄存器、外部),变量的作用域和生存期内部函数与外部函数九、编译预处理宏定义:不带参数的宏定义;带参数的宏定义。
c语言期末知识点总结
c语言期末知识点总结一、C语言基础1. 数据类型和变量- 基本数据类型:整型、浮点型、字符型- 数据类型修饰符:short、long、signed、unsigned- 枚举类型- 类型别名:typedef- 变量的声明和定义- 变量的作用域2. 运算符和表达式- 算术运算符:+、-、*、/、%- 关系运算符:>、<、>=、<=、==、!=- 逻辑运算符:&&、||、!- 位运算符:&、|、^、~、<<、>>- 赋值运算符:=、+=、-=、*=、/=、%=- 表达式求值顺序3. 分支和循环控制- if语句- switch语句- 循环语句:for、while、do-while- break和continue语句- 嵌套循环4. 数组和字符串- 数组的声明和定义- 一维数组、二维数组- 数组元素的访问和赋值- 字符串的表示和处理- 字符串库函数5. 函数- 函数的声明和定义- 函数的参数和返回值- 函数的递归调用- 内联函数- 函数指针6. 指针- 指针的定义和初始化- 指针和数组的关系- 指针和字符串的关系- 指针运算和指针的比较- 指针和函数的关系- 指针数组和数组指针的区别7. 结构体和共用体- 结构体的定义和访问- 结构体数组- 结构体指针- 共用体的定义和访问- 共用体类型转换- 结构体和共用体的嵌套8. 文件的读写操作- 打开文件- 读写文件- 关闭文件- 文件指针的位置操作- 错误处理- 文件的复制和移动二、高级C语言1. 动态内存分配- 内存管理函数:malloc、calloc、realloc、free- 内存泄漏的问题- 内存对齐的原理- 堆栈的概念和区别2. 预处理指令和宏定义- #include和#include_next的区别- 条件编译指令:#if、#ifdef、#ifndef、#else、#endif - 宏定义的语法和用法- 宏的参数和替换规则3. 文件的读写操作- 打开文件的模式:r、w、a、b- 错误处理和异常情况的处理- 文件指针的操作:fseek、fgetpos、ftell、rewind- 文件的读写操作:fread、fwrite、fscanf、fprintf- 关闭文件:fclose4. 多文件程序设计- 头文件的包含和声明- 多文件的编译链接过程- extern关键字的作用- 静态链接和动态链接的区别5. 指针和数组- 指针和数组的互相转换- 数组参数和指针参数的区别- 指针数组和数组指针的使用- 指针数组的指针和指针的数组的指针6. 异常处理和错误处理- 异常处理的概念和原理- 错误处理的方法和技巧- setjmp和longjmp函数的使用- C++中的异常处理机制- assert断言的使用7. 函数指针和回调函数- 函数指针的概念和用法- 回调函数的概念和用法- 函数指针数组和指针函数数组的区别- 函数指针和指针函数的区别8. 字符串处理函数- 字符串的拼接和复制- 字符串的查找和替换- 字符串的比较和排序- 字符串的分割和连接- 字符串的大小写转换三、C语言标准库函数1. 字符串处理函数- strchr、strrchr、strstr等函数- strcmp、strncmp、strcpy、strncpy等函数- strlen、strcat、strncat、strncpy等函数- sprintf、sscanf、snprintf等函数2. 数学函数- ceil、floor、abs、fmod等函数- pow、sqrt、exp、log等函数- sin、cos、tan、asin、acos、atan等函数- rand、srand、fabs等函数3. 文件操作函数- fopen、fclose、fread、fwrite等函数- fgets、fputs、fseek、ftell等函数- remove、rename、tmpfile等函数- perror、feof、ferror、clearerr等函数4. 时间和日期函数- time、clock函数- localtime、gmtime、strftime等函数- mktime、difftime等函数- gettimeofday、setitimer等函数5. 动态内存管理函数- malloc、calloc、realloc、free等函数- memcpy、memset、memmove、memcmp等函数- atoi、atol、itoa、atof等函数- getenv、system等函数总结:以上就是C语言期末考试的知识点总结,从基础语法到高级应用都涵盖了。
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
c++复习摘要第一部分——简单的程序设计一、标识符(包括变量名命名规则)1、定义:由数字、大小写字母和下划线组成2、例子:合法:Int(大小写不一样,不是关键字int)、_ab不合法:new和friend(不能与关键字相同)、a+b(不能有+)、2b(开头不能是数字)二、基本数据类型存储空间位数存储形式double 8 64 补码int 4 32 补码float 4 32 补码char 1 8 ASCII码特殊:指针*p 4(固定为long int类型)string 16(固定大小)注1:精度低—>自动转换—>精度高注2:int a;a=8/3—>a=2(int整型)三、常量与变量1、八进制—>正负号和0开头,例:012、-057十六进制—>正负号和0x或0X开头,例:0x34、-0X68 2、字符常量(1)普通字符:‘A’、‘0’、‘#’、‘’(空格)(2)转义字符:‘\n’、‘\\’(表示\)、‘\0’(3)‘a’—>一个字节,“a”—>两个字节(包括‘/0’),长度为1注:‘\ddd’—>表示八进制字符‘\xdd’—>表示十六进制字符例:strlen(“abc\\\120\0a s\0d”)和sizeof(“abc\\\120\0a sd”)的值—>分析1:其中有a、b、c、\\、\120(八进制)、\0(碰到第一个则终止,且不计入长度),所以结果为5—>分析2:算上所有的字符(包括\0,注意有个空格在a 与s之间),结果为11(char字符占一个字节)3、指数:2e-6、-1.5E2(结尾加一个f(F),表示结果为float 型)注:e(E)后(即指数)必须是整数四、运算符和表达式1、算术运算符+、-、/(不是\)、*(不可省略)、%(取余)注1:++()、--(),其中()中必须是变量,不能是常量和表达式例:5++、(a+b)++、++(2*i)——不合法注2:int i=5,b;b=i++;—>b=5;i=6int i=5,c;c=++i;—>c=6;i=62、赋值运算符(1)区分“=”和“==”(2)a+=b—>a=a+b3、关系运算符和逻辑运算符(1)结果总为1或0例1:t=5>4—>t=(5>4)—>5>4为真,则结果为1—>t的值为1例2:a=1&&2—>a=(1!=0)&&(2!=0)—>a=1(&&运算优先级高)4、逗号运算符:表达式结果为最后一个逗号后的结果例:a=3*5,a+5—>表达式结果为20五、语句1、if(a)—>if(a!=0)2、do whlie语句—>至少执行一次例:do{ int i=1;j=0}while(a=b)分析:先循环一次,由于条件为i=j—>(i=bj)!=0(不是a==b),则结果是无限循环3、switch语句不一定每个case后都有break(跳出当前循环语句,而不是if语句),default至多一个。
例:switch(a){case 1:cout<<’A’;break;case 2:cout<<’B’case 3:cout<<’C’;break;}若输入a=2,则输出的结果为BC,程序从第二个开始执行,因为没有break跳出当前程序,会继续执行下面的程序,直到break跳出等。
4、for循环:注意是否会无限循环(循环条件的正确性)例:for(int x=0;x<=0;x--)—>无限循环六、补充1、continue—>跳过剩余语句(继续循环,不会跳出)2、const int a=5—>a的值不会再变(即a=6—>错误)3、运算符优先级逻辑运算符(!>&&>||)>条件运算符(A?B:C) >值运算符(=、+=、*=)4、条件运算符—>A?B:C例:5>4?3:2—>若A为真,则输出B,否则输出C,所以答案为3第二部分——构造数据类型一、数组1、数组下标只能是常量(a[n]、a[]—>不合法)2、int a[20][20]—>数组未初始化,则元素的值不确定(除了静态数组未初始化时,默认是0)int a[20][20]={0}—>元素全部为0,且每个元素都必须是int型的注:a(5)—>a=5,上述数组最后一个元素为a[19][19]3、部分初始化:a[5]={1,2,3}—>a[5]={1,2,3,0,0}二、指针1、’*’—>取内容,’&’—>取地址int a[5]={0} , *p , p=&a[0](或p=a)—>取出a中的首地址(即a[0])放在p中,则p中所存内容就是a[0]的首地址(*p—>即读取p中地址的内容—>就是a[0])(1)cout<<p—>p本身的首地址(2)cout<<&p—>取p中所存的地址,再输出—>a的首地址(3)cout<<*p—>取p所存首地址的内容—>输出a[0](4)cout<<*(p+1)—>指针往后移动一位—>输出a[1]注:*(p++)—>*(p+1)2、动态内存分配(1)int *p=new float[N]—>一维数组(这里N为变量)int (*p)[4]=new float[3][4]—>二维数组最后—>delete []p三、引用1、int r,&rv=r—>别名与目标名(即rv和r)共用内存2、类型必须一致,必须立即初始化(int &rv;—>错误)例:int a;double &b=a;—>错误3、不能中途换名例:int a,c;int &b=a,&c=b;—>错误4、数组引用:int a[5]={0};(&rv)[5]=a;四、字符串1、char s[20]=”c++程序设计”,*p=s;(1)sizeof(s)—>一共可存放20个元素,每个都是char(占一个字节)—>结果为20(2)sizeof(p)—>p是指针,一定为4个字节—>结果为4(3)Strlen(s)—>”c++”为三个字节,”程序设计”(汉字是两个字节)为8个字节(不含’\0’)—>结果为11注:char a[5]=”12345”—>错误(必须有一个位置放’\0’)2、String(1)string a=”man”,b=”kind”;—>a[1]=’e’—>a=”men”—>可以当作数组看(2)可以连接:c=a+b—>c=”mankind”(3)可以相互赋值:a=b—>a=”kind”注:(2)和(3)都是char字符型数组所不能实现的例:char a[5]=”c++”,b[6]=”hello”;a=b;—>错误五、其他类型1、枚举类型:enum例:enum seasoon {spring,summer,autumn,winter};season s=winter—>s=3;分析:spring相当于0,后面逐次递增(可以对spring进行默认值设定,令spring=1,后面依次递增)2、结构体:struct—>类比——类与对象3、共用体:union注:若干个成员中,其中占用内存最大的,作为共用体类型的大小(不是相加)例:union a{int x;char s;}—>显然占4个字节(int),而不是char的1个字节六、补充1、char name[20]—>cout<<name—>输出为字符数组的内容int name[20]—>cout<<name—>输出首地址2、char *p=”hello”(类比数组)(1)cout<<*p—>h (2)cout<<p—>hello(3)cout<<p+1—>ello—>指针向后移动一位,指向e,再输出后面的内容3、strcmp(s1,s2)—>进行大小比较Strcpy(s1,s2)—>s1=s2(将s2的内容赋给s1)S=strcat(s1,s2)—>将s1与s2的内容进行连接,再给S第三部分——函数一、认识函数1、声明:int add(int a,int b);—>形参不占用空间,可省略为int add(int,int);(注意要有”;”)调用:z=add(a,b)—>a,b均为实参(有内容)例:z=swap(a+b,max(c),v)—>swap函数实参为3个(两个逗号)2、c++的程序总是从main函数开始执行的3、函数不允许嵌套定义,但是可以相互调用4、有默认值的形参右边都要有默认值例:int(int a,int b=0)—>合法int(int a=0,int b)—>不合法5、引用传递:swap(int &x);—>x的值与函数结果有关swap(int x);—>swap函数只是利用了x的值去运算,而未改变x本身的值二、简单函数1、递归函数(可简化程序,但时间和空间需求大)例:阶乘—>int f(int n){if(n==1)return0;else return n*f(n-1);} 2、内联函数(提高程序执行效率,以空间换时间):inline 例:inline int add(int a,int b){}—>只能包含一些简单的语句3、系统函数例:sqrt(2)—>开方,fabs(-9)—>绝对值,rand()—>随机函数4、函数重载——功能相似(1)同名函数,但函数的参数类型、个数或者顺序不同(2)函数的返回值类型不能作为函数重载的区分条件(3)不能把功能不同的函数放在一起重载三、其他1、int a就相当于auto int a—>auto为自动变量,存放于动态存储区,可省略2、extern—>外部变量(属于全局变量),定义在函数体(包括mian函数)之外—>全局寿命3、static—>静态变量(未初始化时,就默认为0)—>有记忆功能(记住上一次运行结果)第四部分——类与对象一、类与对象的认识1、c++通过类来实现封装2、面向对象程序设计的三个特征:封装性、多态性和继承性3、在类体内不能对数据成员进行初始化(因为没定义对象)例:Class A{private:int data=2;}—>错误二、类成员1、private(私有成员)—>若开头省略,则默认为私有成员,只有该类的成员才能进行访问私有成员(派生类和对象都不能访问)2、protected(保护成员)—>允许派生类访问,不允许对象访问3、public(共有成员)—>定义了类的外部接口,允许派生类访问,并可以被对象进行调用4、成员函数类内声明—>settime(int a=0,int b=0){}—>类外定义—>void Clock::settime(int a=0,int b=0){}三、对象1、对象所占据内存只用于存放数据成员(如a、b等),类中函数代码在内存中只占据一份空间2、访问类型:Clock c,*time=&c,则有c.showtime()或(*time).showtime或time->showtime()四、构造函数与析构函数1、构造函数—>对象的初始化(1)它是一个与类同名的成员函数,没有返回值,定义为公有函数,只能在定义对象是被系统内自动调用(2)类中可以有多个构造函数,构造函数可以被重载,可以是内联函数(3)带默认参数的构造函数例:构造函数Clock(int a=0,int b=0)—>Clock c1,c2(1),c3(1,1)—>均是正确的,如c2(1)等价于c2(1,0) (4)复制构造函数:Clock(Clock &c)例:Clock c1;Clock c2(c1)—>Clock c2=c1注1:Clock *p—>不会调用构造函数Clock *p=&a—>出现对象a,则调用构造函数注2:Clock a[4]={c1,c2,c3,c4}—>由于有4个元素都被类定义,故调用4次构造函数,程序结束时调用4次析构函数五、析构函数:~Clock()—>()中不能有参数1、析构函数属于公有成员,不能重载,但可以是虚函数2、当对象被删除或者程序结束时,自动调用析构函数例:Clock *p=new Clock a;delete []p—>申请的空间被删除,则对象也消失,故调用一次析构函数3、一般情况下,调用几次构造函数,结束时就相反顺序调用几次析构函数六、友元:friend1、实现不同类之间的数据共享,但破坏了类的封装性和隐蔽性2、友元函数—>不属于类的成员函数,可以访问类的所有成员(包括私有成员)3、友元类:如Class A{...friend Class B;...}—>意味着B类是A类的友元类—>B类的所有成员函数都可以访问A类的所有成员4、友元关系不能传递且是单向的(A是B的友元函数,但B 不是A的友元函数),友元关系不会被继承七、其他1、this 指针:存在于类的成员函数中,用于区分数据成员(除静态数据成员外)2、静态成员:static(1)不属于某个对象,属于整个类(只能通过类名进行访问)(2)类外初始化,同样具有”记忆功能”3、const可用于对函数重载的区分4、类别对象是否可以访问派生类是否可以访问private 否否protected 否是public 是是5、类别可以重载或内联数量是否可以有形参构造函数是一或多是析构函数否一否注:均无返回类型(如int、double),析构函数可以是虚函数第五部分——继承与派生一、继承1、若省略继承方式,则默认为私有继承例:Class A:B—>Class A:private B2、派生类继承了基类除去构造函数和析构函数之外的全部数据成员和函数成员—>派生类中也有和基类一样的函数3、同名覆盖—>派生类中的新的同名函数覆盖基类的函数4、继承方式—>基类中的成员将在派生类中有的访问权限例:Class B:protected A—>A中的成员在派生类中的访问权限是protected(故派生类的对象不能访问,派生类可以访问)注:A中的public和protected在B中的访问权限都变成protected注1:派生类的对象可以访问基类的public注2:即使基内的private在派生类不可访问却仍然存在注3:private属于”传递一代”,protected可以”多代传递”二、派生1、派生类的构造函数和析构函数(1)例:Clock(int a,char b):Point(b)注:派生类构造函数既要初始化派生类新增的成员,也要为他的基类的构造函数传递数据—>引用了基类的构造函数(2)派生类定义对象时,构造函数调用顺序:先基类—>内嵌对象—>最后派生类例:Class B:public A{piblic:A a;}—>故先调用两次A的构造函数,在调用B的构造函数一次—>析构函数则反向执行注:若为多继承Class C:public A,protected B—>则顺序执行A的构造函数,再是B的构造函数,最后是C的构造函数2、虚基类(1)消除多继承引起的二义性,消除数据冗余(2)通过虚基类继承,最后建立对象的类(称之为最远派生类),才调用虚基函数的构造函数—>保证对虚基类的对象只初始化一次三、其他1、若基类的构造函数有默认值,则派生类就不必给基类传递数据例:Class A{A(int x=1){}};Class B{B(int y=1){}}—>而不必写成Class B{B(int y,int x):A(x){}}2、积累与派生类的赋值兼容(1)派生类的对象可以赋值给基类对象—>就是派生类将基类的那部分赋值给基类—>反之不行(2)同一基类的不同派生类对象不能相互赋值(只是交集,不是包含关系)总结:派生类可以对基类进行操作—>即(基类)=(派生类)的操作是对的,反之都是错的例:Class A—>Class B:public A—>A a;B b;a=b(对)—>b=a(错误)3、判断是否可以访问类别基本身派生类派生类的对象基的私有成员是否否基的保护成员是是否基的公有成员是是是第六部分——多态性一、编译时的多态:函数重载、运算符重载运行时的多态:虚函数二、运算符重载:operator1、成员函数——=、[]、()、—>(这些只能为成员函数)例:加法—>类中声明:Complex operator+(Complex &c)—>类外定义:Complex::Complex operator+(Complex &c)—>函数的实现:c3=c1+c2注:成员函数隐藏一个this指针,故参数比非成员函数少一个2、非成员函数:friend 函数返回值类型operator运算符(形参表)例:friend Complex operator+(Complex &c1,Complex &c2)注:”>>”和”<<”只能重载为非成员函数3、规则和限制(1)只能对已有的c++运算符进行重载例:ab、+++则是非法的(2)下列运算符不能重载.(成员运算符)、*、::、?:、sizeof(3)重载不改变运算符的优先级、结构、操作个数—>只改变功能(4)重载函数不能有默认参数,且必须至少有一个类的对象例1:Complex operator+(Complex &c=2)—>不合法例2:Complex operator+(int &c)—>至少一个Complex类对象(5)operator =(无形参)—>前缀一元运算符(6)对于++a,重载为成员函数—>a.operater++()重载为非成员函数—>operator++(a)对于a++,重载为成员函数—>a.operater++(0)重载为非成员函数—>operator++(a,0)注1:可知,成员函数的形参比非成员函数少一个(this的作用)注2:某一填空题—>bool Bounce operator!(Bounce)三、虚函数1、例:A a,*p;B b;—>则基类对象的指针在指向派生类时,只会指向派生类中的基类部分(谁定义你,你就只与谁有关)—>虚函数可以使基类中的函数”隐藏起来”,从而使指针指向派生类的同名函数2、只有类的成员函数才能是虚函数(构造函数不行,析构函数可以),非成员函数都不行,内联函数不行,静态函数不行3、必须为public继承,由”基类对象的指针或引用”去掉用基函数,才能实现动态绑定四、纯虚函数和抽象类1、纯虚函数:virtual void hello(int x)=0;2、一个类包含了纯虚函数,则为抽象类—>抽象类不能定义对象,只能为基类3、派生类若没给出基类的纯虚函数的函数实现(即定义一个与纯虚函数同名的有实际作用的函数)—>仍不能定义对象,还是一个抽象类(没有同名函数覆盖纯虚函数)4、虚析构函数—>使派生类的析构函数先执行,再执行基类的析构函数—>否则可能有内存泄漏(只执行了基类的析构函数)。