c++期末复习知识点_第1页
c++期末复习知识点_第2页
c++期末复习知识点_第3页
c++期末复习知识点_第4页
c++期末复习知识点_第5页
已阅读5页,还剩5页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、1. Visual C+的基本概念(i)标识符:以字母、数字、下划线组成的字符序列,第一个字符必须是字母或下划线。不能与关键字同名,且不含空格标点符号和其他字符,同时区分大小写。例:不正确的:enum、int、2b、a+3、a-3、#include等均不是正确的标识符正确的:_32、include Int a_3 abc(2)数据类型:字符型(char, 1)、整型(int , 4)、实型(float, 4),双精度(double, 8),无值型(void, 0)、 布尔型(bool, 1)int之前还可以用unsigned、signed short、long修饰,表示不同字节的整数类型cha

2、r之前还可以用unsigned signed修饰(表达式的数据类型以整个表达式中最高的数据类型为准)例:T+2、T+2、18/3+5.、18+5.0/2,注意常用数学函数的返回值类型(3)常量:(字面常量、标识符常量)整型常量一一有十进制、八进制(以。开头)、十六进制(0X(x)开头)三种形式;实型常量一一有普通和科学计数法两种形式。科学计数法时,e的前面必须要有数字,且在e之后必须是整数;(注意2.5f和2.5的区别,注意2.0和2.)字符型常量一一必须以单引号引起来,转义序列以开始,用数值描述时有ddd和 xhh两种形式,即只能是一个八进制或十六进制的数,取值范围在0255,且十六进制 必

3、须以x开头。字符串型常量一一用双引号括起来,存储时系统默认在结尾添加“0”。区分sizeof(字 符串)和strlen(字符串)的值。标识符常量的定义#define a4常变量的定义const int a=4;注意标识符常量和常变量两者的异同点(4)变量:需遵循“先定义后使用,先赋值再操作”的原那么。(5)算术运算符:(详见书,几个需要注意的如下)运算符:两边都是整型,那么做整除运算(去尾取整),有一个是实型,那么是真正的 商。“%”运算符:取余,其两边都必须是整型数。(6)关系运算符:关系成立,表达式结果为整数1,否那么为整数0。(7)逻辑运算符:!&|非。为真,用整数1表示,。为假。注意逻

4、辑运算表达式计算时的优化问题(短路特 性)。(8) sizeof ()运算符:用于计算某一操作数类型的字节数。(9)赋值表达式:=左边只能是变量,a+或a-不能放在二左边二两边数据类型不同时,以左边的数据类型为准二的优先级仅高于逗号运算符复合的赋值表达式中,将复合的赋值运算符右边的局部看作一个整体进行处理(10)逗号表达式:运算符重载为普通函数的方式和重载为友元函数的方式类似,但要注意类中数据成 员的访问权限。双目运算符重载成友元函数,需要两个形参,第一个对应左操作数,第二个对应右 操作数;重载成成员函数,需要一个形参,当前对象为左操作数,形参为右操作数单目运算符重载成友元函数,需要一个形参;

5、重载成成员函数,不需形参要求掌握能重载的运算符有+、-、+、-、*、/、+=、-二、*二、/=、 (插入运算 符)、 (提取运算符)重载+、-时注意如何区分前置和后置。运算符重载的规那么:sizeof不允许重载=-()只能重载成成员函数 只能重载成友元函数运算符重载不能改变运算符的操作数个数、优先级别、结合性(10)继承和派生单一继承、多重继承公有派生、私有派生、保护派生(11)抽象类:不能创立对象,但可以作为基类构造或析构函数为protected的类含有纯虚函数的类(12)优先规那么(支配规那么)和赋值兼容性优先规那么(支配规那么):派生类新增成员名与基类成员名相同时,假设未用类名限定, 派

6、生类定义的成员名优于基类中的同名成员赋值兼容性:派生类对象可以赋给基类对象,反之不可可将派生类对象的指针赋给基类型的指针变量派生类对象可以初始化基类型的引用通过基类指针(引用)只能访问从相应基类中继承来的成员,不允许访问派生 类中的新增成员。(13)虚基类:注意虚基类构造函数的调用(14)多态性:编译时多态性(函数重载或运算符重载)和运行时多态性(虚函数一类中的 非静态成员函数可定义为虚函数)运行时的多态性触发的条件:基类指针(引用)指向派生类,并通过基类指针(引用) 调用虚函数,触发多态性。补充:.C+程序从上机到得到结果的几个操作步骤依次是编译、运行、编辑、连接。.能作为C+程序的基本单位

7、是函数。.在C+语言中,int型数据在内存中的存储形式是补码。.从左往右依次计算各表达式,以最后二个表达式的值作为整仝逗号表达式的值。(11)强制类型转换:(type)表达式 或 type (表达式)(12)优先级顺序:单目优于双目,双目优于三目,在此基础上,算术一位移(插入、提取)一关系一位一 逻辑一条件一赋值一逗号。(优先级的序号越小,其优先级越高)(13)自增(+),自减(-)运算符谁在前先做谁,只能对变量进行+或-。a+或a-的结果可理解为表达式,+a或-a的结果可理解为变量。常与逻辑运算的短路特性合在一起考查(14)数据的输入和输出:C+语言本身没有输入输出语句。(P36)在输入数据

8、的过程中,如果输入的一行仅仅是一个回车时,cin把该键作为空格处 理,仍等待输入数据。需要注意的是,用cin输入数据时,实际输入数据的个数、类型及顺序,必须与dn中列举的变量dn中列举的变量对应,否那么输入的数据不准确列如:int b;char c=,x,;cinbc;coutbycendl;假设输入堂,那么输出的是二那么变量b的值为0,而变量c没有获得输入的值,并使后面的cin无法正确提取数 据。(15)C+语言用非零值表示逻辑“真”值。Visual C+的基本语句(顺序、选择、循环)(1)单项选择语句:if (表达式) S表达式的值非0 (成立),那么执行S;否那么,跳过S直接执行后继的语

9、句。(2)二选一语句:,if (表达式)S1; elseS2; *表达式可以是符合C+语法规那么的任一表达式*表达式非0 (成立),执行S1;否那么执行S2.(3)嵌套的条件语句:if (表达式1)S1;else if (表达式2)S2; else S; 注意:else和谁配对?与最靠近它的且没有else与之配对的if进行配对(4)条件运算符:?:表达式1?表达式2:表达式3表达式1成立,以表达式2的值为整个表达式的结果,否那么以表达式3的值为整个表 达式的结果(5)开关语句switch语句:switch (表达式)(case 常量表达式LSI; break;case 常量表达式2:S2; b

10、reak;default: S3;)例:int a=7;switch(a%5)case O:couta+;case 1 :cout+a;case 2:couta一;case 3:cout-a;default :couta;输出的结果是755.你知道是为什么吗?int k=0;char c=A;do switch (c+) 输出的结果是4,但是你猜猜如果把c+改成+c结果会是什么呢,没错就是2.啦啦啦case A :k+;break;case B :k一;case C :k+=2;break;case D :k=k%2;continue;case E :k=k*10;break;default:

11、k=k/3;k+;while(c,G);coutkendl;表达式和常量表达式的值只能是整型、字符型或枚举型。根据表达式的值选一个对应的常量表达式后的语句执行,直到碰到break或switch 的结束default的位置没有规定,但需考虑是否要添加breakif和switch使用的注意:前者可以表示连续的条件区间也可以表示离散的条件, 而后者只能表示离散的条件,因此,任一个switch结构可以转换成if结构,但反之不 行。当用switch表示连续的条件时需设法将连续的条件转换成离散的形式。(6)循环语句:while (表达式)s执行过程:表达式非0做循环体S。循环体有可能一次也不被执行。doS

12、while(表达式);(分号不可以忘)执行过程:先执行循环体S,再判断表达式的值,非0继续循环。循环体至少做一次 for (; ;表达式3S执行过程:表达式1、2、3均可省略,假设省略,需在合适的位置进行处理*三种循环可以相互转换,不管用哪种循环,一定要把握好循环条件(什么样的情况 下循环)、循环体(循环做什么)*不能出现死循环!(7) break continue 语句break一一跳出整个循环,不再循环(结束该层的循环)continue结束本次循环,进入下一次循环3.函数C+源程序、目标程序、可执行程序的后缀名。(2)任何一个C+程序必须有一个且只能有一个main函数。(3)函数要先定义后

13、使用,假设先使用后定义需在使用前加函数原型说组(绿皮方P32.772) 列如:intf!1);此原型声明即是对的。int f2(int=l,int);lkb原型声明即是错的。(4)函数不能嵌套定义,但可以嵌套调用(递归)。(5)形式参数和实际参数:在函数定义中,在参数表中一一列出的参数称为形式参数(对 于函数体来说,它们是量、要在函数体中进行处理的量,无需再重新定义);在函 数调用时依次列举的参数称为实际参数(传递给函数实际处理的值或量)。即当调用函 数时,实参和形参各占一个独立的存储单元。(6)函数的返回值:每个函数都可以有return语句。假设函数无返回值,那么可不写return语句,或直

14、接写“return;,假设函数有返回值,那么必 须有return语句。C+语言的函数中,return语句中的表达式的类型可以与函数的类型不一 致。一个return只能返回一个值,同一时刻只有一个return语句有效。(7)函数的调用:。各函数之间即允许直接递归调用,也允许间接递归调用)语句调用、表达式调用函数调用时,实参和形参之间有传值、传址、引用三种不同的数据传递形式(8)标识符的作用域:这里的标识符其实包括了变量和常量,所谓作用域那么说明了标识符能被使用的范 围。作用域分为块作用域、文件作用域、函数原型作用域、函数作用域、类作用域和命 名空间作用域块作用域:在块内说明的标识符,其作用域始于

15、标识符的说明处,止于块的结尾处。 只能在该块内引用。文件作用域:在所有函数之外定义的变量称为全局变量。全局变量(标识符)的作用 域。从定义位置开始到该源程序文件结束。也可通过extern将其作用域外延到包含它 的工程中的其它文件。同一块内不允许出现同名的局部变量,不同块作用域内允许,当两个块重叠的情况 下出现局部变量重名,那么遵循“县官不如现管”的原那么。局部变量和全局变量重名时,也遵循“县官不如现管”的原那么。此时假设想在同名的 局部变量作用域内强制访问该全局变量可通过域作用符(:)访问(9)变量的存储类型:auto、static extern register在C+语言中,函数的默认存储种

16、类是extern。在C+语言中,全局变量的默认存储种类是extern。auto类型的变量在程序运行到定义处系统为之分配内存,在其作用域完结处系统自动 回收其存储区域static类型的量分为static局部变量和static全局变量。两者均在程序一运行时系统就 为其分配内存,但它们的作用域仍遵循各自的作用域特性,static局部变量会出现虽存 在但不能被访问(不在作用域范围内)的情况。用static修饰局部变量的时,其初始化是在相关函数或语句块第一次被执行时完成的, 以后再执行相关函数或语句时不再被执行。在程序执行期间,这些变量一直占用固定 的存储空间,保持着最近一次的操作结果。在程序声明的全局

17、变量总是静态变量,其默认值是Oo假设在声明全局变量的时候加上 static,那么表示所声明的变量仅限根源程序文件内使用。(10)内联函数:(实质是用存储空间换取运行时间)用inline说明。在编译时将函数体嵌入到每个内联函数调用处,省去了函数调用时的参 数传递、系统栈的保护与恢复等的时间开销,但增加了代码(消耗了内存空间)。(11)函数重载:判断重载:同函数名,形参的个数或类型不同。(与函数的返回值无关)(12)缺省参数值的函数:在调用函数时,假设明确给出了参数的值,那么使用相应参数的值;假设没有给出参数值, 那么使用缺省值。缺省值的给定需从最右边的参数开始。(13) exit 和 retur

18、n 的使用4.数组(1)数组概念:数目固定、类型相同的假设干个变量的有序的集合。(2)数组定义:(数组的大小在编译的时候必须确定,在程序执行过程中不能改变,所以不 能用变量说明数组的大小。)一维数组的定义:数组名常量表达式;二维数组的定义:数据类型 数组名常量表达式1常量表达式2;二维数组在内存中的存储:按行存放。a0ala2a009d0l,a02,(3)数组的初始化:初始化的数据个数不能超过定义的元素个数。假设是局部初始化,那么余下来元素的值根据类型,整型默认为0,字符型为空二维数组的初始化:可以省略第一维的大小。例:int a口3= 123,4,5,6;数组(除字符数组外)不能被整体输入或

19、整体输出。不可以给数组做整体的赋值,字符数组也不可以。(3) 一维数组作为函数的参数:假设一维数组做函数的形参,那么调用该函数时,相应的实参用数组名。传递给形参的是 实参数组所占内存的起始位置值,这样两个数组就合用实参数组的内存单元。(4)字符数组:元素是字符的数组。注意:字符数组中可以存放字符串也可以存放单纯的 字符,是否是字符串,关键看有没有0。字符数组初始化:charsl3=4c,/a/r,; char s24=6c,/a7r60,;char s2 口二“car”;/字符串后自动加0char s2=ucaf,; 字符串后自动加VT字符数组可以被整体输入或输出,例:char s20; ci

20、ns; coutsendl;(5)常用字符串处理函数:#include strlenstrcpystrcatstrcmp strlwrstruprstrncmpstrncpystrstr对常见的函数的理解和记忆从这几个方面:函数功能、函数名、函数参数、函数返回 值、一两个实例.编译预处理文件包含(#include)、宏定义(#define)条件编译(#if)使用系统库函数,要进行对应的文件包含(注意。和“”两者的区另IJ) 在宏替换时,只作替换,不作运算(尤其是带参宏进行替换时)For example:#includeiostreamusing namespace std;#define T(

21、x,y) (x)(y)?(x):(y)void main()cout(10*T(2+4,5)endl;T/ze key: 5.结构体类型(struct)共用体类型(union)枚举类型(enum)(1)类型定义,系统对类型不会分配内存单元,只会在用该类型定义某变量时,给该变量 分配内存单元。(2)注意区别结构体类型和共用体类型。结构体类型的变量的存储字节数为所有分量的存 储字节的和值,共用体类型变量的存储字节数为其所有分量中最长分量的存储字节数。(3)枚举类型中枚举常量及对应的整数值之间的关系,枚举型变量的输入和输出。.指针对于指针的理解:可以把内存里的每一个存储单元想像成是一个抽屉,这个抽屉

22、是由假设干个固定大小的单位 (字节)组成,抽屉里可以放苹果(double) 桔子(int)、葡萄(char)等,抽屉有大有小(因为苹果、桔 子、梨大小不一),具体多大,就看你想放什么每个抽屉都有一个钥匙(指针),每个钥匙有体积和性质(两个属性。钥匙的体积(值, 表现为地址编号)都是一样的,但性质类型,表现为能开多大的抽屉,以什么样的方式开) 不同,不同的钥匙以不同的方式开不同的抽屉抽屉里可以放钥匙,由于钥匙的体积都是一样的,所以,所有放钥匙的抽屉大小肯定都是 一样的,是4B到这里可以总结出来,抽屉有两种,放普通物品的和专门放钥匙的。从仓库(内存)拿出某个抽屉,给它起个名字用于放指定类型的东西(

23、苹果、桔子、葡萄、 钥匙,都有可能),就是定义一个变量(int i);如果上述定义的时候,指定存放的东西是钥匙,那就是定义一个指针变量(int *ip) (ip 是存放钥匙的抽屉的名字)可以通过抽屉的名字知道该抽屉的钥匙(&i,获得的是i的指针)ip=&i表示把ip指向i,即,通过ip抽屉里的钥匙可以去开名字为i的抽屉注意,上一句话里只是描述了可以开,实际并没有开,要想实际地去开,去取到i抽屉里 的东西或往i抽屉里放东西,需要用*ip,如*ip=10;表示把10放到i抽屉里。对于指针运算的理解:对于钥匙(指针),可以具体想像成是从左往右4个数字(每个数字由1B表示)组成的密 码锁,不同的数字组

24、合(指针的值)对应为同类型(存放的东西类型相同)的不同(抽屉位 置不同)抽屉的钥匙改变4个数字的组合,让密码锁对应到不同的抽屉,就是指针的运算ip=ip+1,就是把ip变成紧靠其后的下一个同类型抽屉的钥匙,变之前的抽屉和变之后的抽 屉位置是相邻的。可以推广到ip=ip+n;ip=ip-l,就是把ip变成紧靠其前的前一个同类型抽屉的钥匙,变之前的抽屉和变之后的抽 屉位置是相邻的。可以推广到ip=ip-n;ip+n或ip-n呢? ip不变,只是相对说明其后(前)的第n个抽屉的钥匙(1)其值为地址,其型为指针所指存储单元占有的连续字节数(所指对象的数据类型)(2)常量指针、变量指针、函数指针(3)指

25、针的定义、初始化、赋值、int a,b,*p=&a,*q; q=&b;不同类型的指针变量所占内在单元大小相同,即sizeof(char *)、sizeof(int*) sizeof(float*)的值相同,均为4(4)通过指针访问变量:*p=100;(5)指针的运算:算术运算:p+、p-、+p、p p+i、p-i、p-q关系运算:pq p=q*p+、*+p、(*p)+、*(p+)、+*p(6)指针和数组:#define N 100#define M 10int *pl,*p2N,(*p3)N;注意三者的区别指针和一维数组:int aN,*p=a;*(p+i)api6aip+ia+i&aip+0

26、指向。号元素,p+N-1指向最后一个元素指针和二维数组:int aMN,(*q)N=a;a+iap+i看到形如 * (指针+数值)就替换为指针数值(7)二级指针:指针的指针,理解就行(8)指向函数的指针:如 float (*fp)(int a,char b);(9)返回值为指针的函数:字符串处理中常用到,拷贝、排序,new和delete (C+提供的运算符)type* p=new type;type* p=new type(value); type* p=new typesize;delete p;delete p;delete sizep;(ID引用:定义引用时就必须初始化;引用类型和初始化

27、的变量类型必须相同;定义好引用后不 可再修改引用的指向;不能给常数定义引用const修饰指针(或引用):靠近谁就const谁float x,y;const float *p=&x;float * const q=&x;const float* const r=&x;float x,y;const float *p=&x;float * const q=&x;const float* const r=&x;*p二 100 错,p=&y 对 *q= 100 对,q=&y 错 /*r=100 错尸&y 错(13)链表:创立(头节点插入、尾节点插入、有序插入)、读取、删除,在这些基本过程中均涉及到如何从一个节点移动到下一个节点。8.类和对象(要注意区分两者的概念)(1)面向对象

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论