《c++期末总复习-精华篇.doc》由会员分享,可在线阅读,更多相关《c++期末总复习-精华篇.doc(17页珍藏版)》请在金锄头文库上搜索。
1、c+复习摘要第一部分简单的程序设计一、标识符(包括变量名命名规则)1、定义:由数字、大小写字母和下划线组成2、例子:合法:Int(大小写不一样,不是关键字int)、_ab不合法:new和friend(不能与关键字相同)、a+b(不能有+)、2b(开头不能是数字)2、 基本数据类型存储空间位数存储形式double864补码int432补码float432补码char18ASCII码特殊:指针*p4(固定为long int类型)string16(固定大小)注1:精度低自动转换精度高注2:int a;a=8/3a=2(int整型)3、 常量与变量1、 八进制正负号和0开头,例:012、-057十六进
2、制正负号和0x或0X开头,例:0x34、-0X682、 字符常量(1) 普通字符:A、0、#、 (空格)(2) 转义字符:n、(表示)、0(3) a一个字节,“a”两个字节(包括/0),长度为1注:ddd表示八进制字符xdd表示十六进制字符例:strlen(“abc1200a s0d”)和sizeof(“abc1200a sd”)的值分析1:其中有a、b、c、120(八进制)、0(碰到第一个则终止,且不计入长度),所以结果为5分析2:算上所有的字符(包括0,注意有个空格在a与s之间),结果为11(char字符占一个字节)3、 指数:2e-6、-1.5E2(结尾加一个f(F),表示结果为floa
3、t型)注:e(E)后(即指数)必须是整数4、 运算符和表达式1、 算术运算符+、-、/(不是)、*(不可省略)、%(取余)注1:+()、-(),其中()中必须是变量,不能是常量和表达式例:5+、(a+b)+、+(2*i)不合法注2:int i=5,b;b=i+;b=5;i=6 int i=5,c;c=+i;c=6;i=62、 赋值运算符(1) 区分“=”和“=”(2) a+=ba=a+b3、 关系运算符和逻辑运算符(1)结果总为1或0例1:t=54t=(54)54为真,则结果为1t的值为1例2: a=1&2a=(1!=0)&(2!=0)a=1(&运算优先级高)4、 逗号运算符:表达式结果为最后
4、一个逗号后的结果例:a=3*5,a+5表达式结果为205、 语句1、 if(a)if(a!=0)2、 do whlie语句至少执行一次例:do int i=1;j=0while(a=b)分析:先循环一次,由于条件为i=j(i=bj)!=0(不是a=b),则结果是无限循环3、 switch语句不一定每个case后都有break(跳出当前循环语句,而不是if语句),default至多一个。例:switch(a)case 1:coutA;break;case 2:coutBcase 3:coutC;break;若输入a=2,则输出的结果为BC,程序从第二个开始执行,因为没有break跳出当前程序,会
5、继续执行下面的程序,直到break跳出等。4、 for循环:注意是否会无限循环(循环条件的正确性)例:for(int x=0;x无限循环6、 补充1、 continue跳过剩余语句(继续循环,不会跳出)2、 const int a=5a的值不会再变(即a=6错误)3、 运算符优先级逻辑运算符(!&|)条件运算符(A?B:C) 值运算符(=、+=、*=)4、 条件运算符A?B:C例:54?3:2若A为真,则输出B,否则输出C,所以答案为3第二部分构造数据类型1、 数组1、 数组下标只能是常量(an、a不合法)2、 int a2020数组未初始化,则元素的值不确定(除了静态数组未初始化时,默认是0
6、)int a2020=0元素全部为0,且每个元素都必须是int型的注:a(5)a=5,上述数组最后一个元素为a19193、 部分初始化:a5=1,2,3a5=1,2,3,0,02、 指针1、*取内容,&取地址int a5=0 , *p , p=&a0(或p=a)取出a中的首地址(即a0)放在p中,则p中所存内容就是a0的首地址(*p即读取p中地址的内容就是a0)(1)coutp本身的首地址(2)cout取p中所存的地址,再输出a的首地址(3)cout取p所存首地址的内容输出a0(4)cout指针往后移动一位输出a1注:*(p+)*(p+1)2、动态内存分配(1)int *p=new float
7、N一维数组(这里N为变量)int (*p)4=new float34二维数组最后delete p3、 引用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 a5=0;(&rv)5=a; 4、 字符串1、 char s20=”c+程序设计”,*p=s;(1) sizeof(s)一共可存放20个元素,每个都是char(占一个字节)结果为20(2) sizeof(p)p是指针,一定为4个字节结果
8、为4(3) Strlen(s)”c+”为三个字节,”程序设计”(汉字是两个字节)为8个字节(不含0)结果为11注:char a5=”12345”错误(必须有一个位置放0)2、String(1) string a=”man”,b=”kind”;a1=ea=”men”可以当作数组看(2) 可以连接:c=a+bc=”mankind”(3) 可以相互赋值:a=ba=”kind”注:(2)和(3)都是char字符型数组所不能实现的例:char a5=”c+”,b6=”hello”;a=b;错误5、 其他类型1、 枚举类型:enum例:enum seasoon spring,summer,autumn,w
9、inter;season s=winters=3;分析:spring相当于0,后面逐次递增(可以对spring进行默认值设定,令spring=1,后面依次递增)2、 结构体:struct类比类与对象3、 共用体:union注:若干个成员中,其中占用内存最大的,作为共用体类型的大小(不是相加)例:union aint x;char s;显然占4个字节(int),而不是char的1个字节6、 补充1、 char name20cout输出为字符数组的内容 int name20cout输出首地址2、 char *p=”hello”(类比数组)(1) couth(2)couthello(3) coute
10、llo指针向后移动一位,指向e,再输出后面的内容3、 strcmp(s1,s2)进行大小比较 Strcpy(s1,s2)s1=s2(将s2的内容赋给s1) S=strcat(s1,s2)将s1与s2的内容进行连接,再给S第三部分函数1、 认识函数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、有默认值的
11、形参右边都要有默认值例:int(int a,int b=0)合法 int(int a=0,int b)不合法5、 引用传递:swap(int &x);x的值与函数结果有关swap(int x);swap函数只是利用了x的值去运算,而未改变x本身的值2、 简单函数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)开方,fab
12、s(-9)绝对值,rand()随机函数4、 函数重载功能相似(1) 同名函数,但函数的参数类型、个数或者顺序不同(2) 函数的返回值类型不能作为函数重载的区分条件(3) 不能把功能不同的函数放在一起重载3、 其他1、 int a就相当于auto int aauto为自动变量,存放于动态存储区,可省略2、 extern外部变量(属于全局变量),定义在函数体(包括mian函数)之外全局寿命3、 static静态变量(未初始化时,就默认为0)有记忆功能(记住上一次运行结果)第四部分类与对象1、 类与对象的认识1、 c+通过类来实现封装2、 面向对象程序设计的三个特征:封装性、多态性和继承性3、 在类
13、体内不能对数据成员进行初始化(因为没定义对象)例:Class Aprivate:int data=2;错误2、 类成员1、 private(私有成员)若开头省略,则默认为私有成员,只有该类的成员才能进行访问私有成员(派生类和对象都不能访问)2、 protected(保护成员)允许派生类访问,不允许对象访问3、 public(共有成员)定义了类的外部接口,允许派生类访问,并可以被对象进行调用4、 成员函数类内声明settime(int a=0,int b=0)类外定义void Clock:settime(int a=0,int b=0)3、 对象1、 对象所占据内存只用于存放数据成员(如a、b等),类中函数代码在内存中只占据一份空间2、 访问类型:Clock c,*time=&c,则有c.showtime()或(*time).showtime或time-showtime()4、 构造函数与析构函数1、 构造函数对象的初始化(1) 它是一个与类同名的成员函数,没有返回值,定义为公有函数,只能在定义对象是被系统内自动调用(2) 类中可以有多个构造函数,构造函数可以被重载,可以是内联函数(3) 带默认参数的构造