C++主要知识点.docx
- 文档编号:10084077
- 上传时间:2023-05-23
- 格式:DOCX
- 页数:16
- 大小:300.86KB
C++主要知识点.docx
《C++主要知识点.docx》由会员分享,可在线阅读,更多相关《C++主要知识点.docx(16页珍藏版)》请在冰点文库上搜索。
C++主要知识点
本课程主要(非全部)知识点
第一章概述
计算机中所有信息都以二进制码表示。
位(Bit):
度量数据的最小单位
字节(Byte):
最常用的基本单位
1byte=8bit
第二章C++简单程序设计
C++程序中须有且仅有一个名为main的函数。
注释的第一种形式是以”//”开始至行末,第二种形式是/*字符串*/,如/*ThisisaC++example*/
标识符由字母、数字及下划线_组成,并以字母或_开始。
整型常量十进制示数形式:
[+|-]DecimalDigits[L|l]
整型常量八进制示数形式:
[+|-]0OctalDigits[L|l]
整型常量十六进制示数形式:
[+|-]0xHexadecimalDigits[L|l]
实型常量一般形式:
整数部分和小数部分可省略其一,小数点必不可少。
实型常量指数形式:
指数部分为整数。
字符常量,普通字符,用单引号括起来的单个字符。
转义字符,如:
'\n'、'\''、'\"'、'\\'、'\t'
字符数据在内存中是以整数形式存放的。
如:
'a'——97、'A'——65、'0'——48等。
字符串常量简称字符串,是由一对双括号括起来的字符序列。
编译系统会在每个字符串之后自动加一个'\0'作为字符串结束标志。
'\0'的ASCII码值为0。
用一个与常量相关的标识符来代替常量,称为符号常量。
符号常量的声明形式:
const类型说明符常量名=常量值;
或类型说明符const常量名=常量值;
符号常量在使用之前一定要先声明;符号常量在声明时一定要赋初值,且在程序中不能改变其值。
求余运算符%的操作数必须是整型,如9%5.
混合运算时的数据类型转换:
如果参与运算的操作数类型不一致,则系统自动对数据进行类型转换(即隐含转换),转换原则是将低类型数据转换为高类型数据,参见书中p111图4-1.
混合运算时的数据类型转换:
也可以通过强制类型转换,将表达式结果的类型转换为指定类型。
强制类型转换的形式:
类型说明符(表达式)
或(类型说明符)(表达式)
或static_cast<类型说明符>(表达式)
赋值表达式的值与类型与被赋值变量相同。
赋值运算符两边类型相同时进行直接赋值。
赋值运算符两边类型不同时,将右值类型转换为左值类型。
条件表达式的形式:
表达式1?
表达式2:
表达式3
当表达式1为真时,条件表达式的值与类型与表达式2相同;当表达式1为假时,条件表达式的值与类型与表达式3相同。
sizeof操作符用于计算某种类型的对象在内存中所占的字节数。
语法形式:
sizeof(类型名)
或sizeof(表达式)
整型数据输出时默认为十进制方式输出,也可通过控制符hex、oct、dec将进制改为十六进制、八进制或恢复为十进制。
浮点数的输出默认为六位数字的精度(若没有小数部分,则省略小数点)。
使用小数形式还是科学记数法显示取决于该浮点数的值。
setprecision(int):
未设置fixed或scientific时精度值确定总的有效位数。
fixed、scientific分别以小数、科学记数法显示浮点数,默认为6位小数。
setprecision(int):
设置fixed或scientific时精度值确定小数位数。
cout.unsetf(ios:
:
fixed);与cout.unsetf(ios:
:
scientific);分别为取消fixed、scientific的显示方式。
setw(int)可设置显示时的字段宽度,且为一次性操作。
setfill(char)可设置字段宽度内的填充字符。
left、right分别为左对齐、右对齐,默认为右对齐。
用cin同时输入多个数据时,各数据之间以空白符(可以任意多个)隔开,以回车结束。
cin无法将空白符(即''、'\n'及'\t')输入给字符变量。
函数getchar()可将任何字符输入给字符变量。
使用字符输入函数getchar()与字符输出函数putchar(char)。
getchar()括号中无参数。
输入时空白符为有效字符,以回车结束.
getchar()在使用时,回车可同时成为有效字符和结束标志。
当要求输入n个字符时,若实际输入的第n个字符恰好为回车,则该回车一符两用。
控制流程-选择结构:
if语句中的复合语句:
if(表达式)
{语句1;
…
语句n;}
else
{语句1;
…
语句m;}
switch语句语法形式:
switch(表达式)
{case常量表达式1:
语句1;
case常量表达式2:
语句2;
┆
case常量表达式n:
语句n;
default:
语句n+1;
}
switch语句中的表达式可以是整型、字符型、枚举型;找到入口后即从该入口开始执行,且后面的不再判断就直接执行;default也可以没有。
控制流程-循环结构:
循环语句注意三点:
本次循环的工作及其与下次循环的关系;循环条件;初始值的设置。
4break及continue语句
语法形式:
break;
及continue;
循环语句中,break用于终止当前循环;continue用于终止本次循环。
两种常用的循环算法:
迭代法:
由变量的旧值递推出变量新值的过程;穷举法:
对问题的所有可能状态一一测试,直到找到解或将全部可能的状态都测试过。
第三章函数
函数定义的一般形式:
函数类型函数名(参数表)//函数头部
{//函数体
语句序列;
}
函数类型也称返回值类型
return语句的作用:
带回返回值;控制流程返回;
return语句中的表达式可以使用括号,也可不使用。
如果函数类型和return语句中表达式的类型不一致,则以函数类型为准。
如果函数类型为void,则return用法为return;,或省去该语句。
在调用函数之前,一定要先有函数原型(或称函数声明)。
函数原型包括三部分:
函数类型、函数名字、参数类型表。
函数原型的位置:
函数的外部,或调用函数的内部。
注意区分函数原型与函数头部:
函数原型是一个独立的语句,函数头部后面紧跟函数体。
使用数学函数时应嵌入头文件cmath,即#include
cmath中的几个常用函数:
函数原型
说明
doublesin(doublex);
x(弧度)的正弦
doubletan(doublex);
x(弧度)的正切
doubleexp(doublex);
指数函数ex
doublefabs(doublex);
x的绝对值
doublelog(doublex);
x的自然对数(以e为底)
doublelog10(doublex);
x的对数(以10为底)
doublepow(doublex,doubley);
x的y次方(xy)
doublesqrt(doublex);
x的平方根
函数调用的形式:
函数名(实参表)
形参:
函数定义时用于接收传递值的变量称为形参;
实参:
函数调用时传递给被调函数的值称为实参;
函数调用时,实参的值赋值给形参;
实参与形参是两个完全不同的、毫无关系的变量,即使重名也毫不相干。
实参可以是常量、变量或表达式;实参要有确定的值,以便在调用函数时给形参值赋;实参与形参的类型应相同,否则将进行类型转换。
函数定义是实现函数功能的代码,函数头部的末尾没有分号;
函数原型描述了函数的接口:
传递给函数的参数数目及类型、函数返回值的类型;
函数调用使得程序将参数传递给函数,并执行函数代码。
C++程序从主函数开始执行;
函数可以互相调用,但主函数例外(主函数不能被其他函数调用,它是由操作系统调用);
所有函数都不能嵌套定义。
C++函数允许自己调用自己,这种功能被称为递归。
内联函数定义的语法形式:
inline函数类型函数名(参数表)
{函数体语句;}
内联函数的作用:
既体现结构化和可读性,又能尽量提高效率。
普通函数将程序流程转到独立的函数;内联函数用内置代码替换函数调用。
对函数的内联声明必须在调用之前。
内联函数的使用场合:
函数体适当小,经验是1~5行的小函数,不能含有复杂的结构控制语句,如switch、while;该函数是循环体的一部分时,可使嵌入的效率相对较高;在程序中的执行次数不要太多。
对于一组概念相同、处理对象不同的函数,可通过函数重载达到简化编程的目的。
函数重载的关键是参数列表;;重载函数要求参数的数量、类型、顺序中至少有一项不同;编译器根据参数的数量、类型、顺序产生调用匹配。
C++可以给函数定义默认参数值。
默认参数的位置:
当函数既有原型又有定义时,只能在函数原型中默认参数;若函数只有定义,则默认参数才能出现在函数定义中。
函数参数的默认值只能从后向前设置。
局部变量包括函数体中定义的变量、函数形参、块中定义的变量。
局部变量的作用域:
从该变量的声明开始,至本函数或本块结束。
全局变量是在函数外部声明或定义的变量。
全局变量的作用域:
从该变量的声明开始,至本文件结束。
全局变量破坏了模块结构的独立性;全局变量的初始值默认为0;若全局变量与局部变量重名,则全局变量被屏蔽。
变量的属性包括作用域(空间)和生命期(时间)两方面。
作用域:
局部变量、全局变量
生命期:
动态存储类型、静态存储类型
动态存储类型(auto、register)变量的生命期:
自该变量的定义开始,至本函数或本块结束。
静态存储类型变量的生命期:
自该变量的定义开始,至本程序运行结束。
局部变量的存储类型可以是动态:
①auto——存储在内存中,是局部变量的默认存储类型;
②register——存储在寄存器中
局部变量的存储类型可以是静态:
static
全局变量的存储类型是静态。
局部变量的存储类型是静态(即static)时,函数退出时函数中的static变量保持其存储空间和数值;下次再调用该函数时,static变量还是上次退出函数时的值;静态变量的默认值为0。
全局变量的存储类型是静态。
静态变量的默认值为0
全局变量可用extern、static修饰。
extern用于两种情况:
①同一文件中,对全局变量先访问后定义时,应在访问之前用extern对该全局变量进行声明。
*②在某个文件中定义全局变量,希望在另一文件中访问该全局变量时,应在访问之前用extern对该全局变量进行声明。
*static:
某个文件中定义的全局变量不希望被其它文件访问时,可用static进行限定。
第四章数组
数组占有一片连续的存储空间,数组元素按下标值依次存放。
数组元素的下标从0开始。
一维数组初始化的几种正确形式:
floatf[5]={1.0,1.2,1.4,1.6,1.8};
intg[]={1,2,3,4};//数组g的元素有4个
inta[5]={0,2,4};//其余元素被初始化为0
多维数组:
每个元素都是数组的数组。
N维数组定义形式:
类型数组名[常量表达式1][常量表达式2]…[常量表达式N];
N维数组元素的访问形式:
数组名[下标表达式1][下标表达式2]…[下标表达式N]
遍历N维数组元素时,须N重循环来完成;按数组元素在内存中的存放顺序依次访问数组元素时:
最外层循环对应于下标1,最内层循环对应于下标N。
多维数组的几种正确初始化形式:
inta[3][4]={{1,2,3,4},{5,6,7,8},{9,10,11,12}};
intb[3][4]={1,2,3,4,5,6,7,8,9,10,11,12};
intc[2][2][3]={{{1,1,0},{2,0,0}},
{{3,0,0},{4,4,0}}};
intd[][2][3]={{{1,1},{2}},{{3},{4,4}}};
//只能省略第一维的长度,可以只对部分元素初始化
字符串是以空字符'\0'结尾的一维字符数组。
字符串的存放形式,如”hello”的存放形式为:
'H'
'e'
'l'
'l'
'o'
'\0'
可用字符串常量对字符数组进行初始化。
如:
charb1[6]={"Hello"};
charb2[6]="Hello";
charb3[]={'H','e','l','l','o','\0'};
charc[10]="Hello";//其余4个元素初始化为'\0'
charname[3][10]={"zhang","wang","lin"};
用字符数组来存放、处理字符串不太方便。
C++提供了一个功能更为强大的类型—string类。
string类提供了大量常用的字符串处理操作,如对字符串赋值、合并字符串、比较字符串等。
函数getline()的用法。
第五章指针
一个实体在内存中占若干字节,其中第一个字节的地址就是该实体的地址。
通过地址运算符(&)可获得实体存放的地址
指针变量是一种特殊类型的变量,以地址作为其值。
定义指针变量的形式:
数据类型*指针变量名1,…,*指针变量名n;
不同类型的指针,它们的值看起来一样,但所指向的字节数不同。
将指针运算符(*)应用于指针变量,可得到该地址处存储的值。
指针和整数(short,int,long)是截然不同的类型:
整数——可以执行加、减、乘、除等运算的数字;
指针——描述的是内存中的位置,例如将两个指针的值相乘没有任何意义。
通过指针变量访问内存时,一定要先将指针指向确定的变量。
引用是一种特殊类型的变量,可以认为引用是某个变量的别名。
引用的定义形式如下:
inti;
int&ri=i;//定义了int型的引用ri,ri是i的别名
定义一个引用时,必须同时将它初始化为一个已存在的内存实体。
引用被初始化后,不能再成为其它实体的别名;引用被初始化后,便与关联的实体等价。
引用的主要用途是用作函数的形参,使得在被调函数中能够处理主调函数中的数据。
只有当函数形参为引用或指针时,才能在被调函数中处理主调函数中的数据。
数组名就是数组的首地址,即第一个元素的地址。
指针和数组名都表示地址,但指针的值可以改变,而数组名是常量。
通过运算符[]访问数组元素。
用数组名作函数形参时,形式是数组,实质是指针。
字符串常量也是一个一维字符数组的名字,表示字符串中第一个字符的地址。
一维字符数组名、字符串常量、字符型指针的值均为字符型地址。
一维字符数组名、字符串常量是常量,字符型指针是变量。
cout遇到字符型地址时,将从该字符开始输出,直到空字符('\0')为止。
字符串与常规数组的区别:
字符串有内置的结束标志;不必将字符串的长度作为参数传递给函数,函数可以自己检测出空字符'\0'。
多维数组的各级指针:
例有如下定义语句:
inta[3][4]={{1,3,5,7},{9,11,13,15},{17,19,21,23}};
那么
a表示a[0]的地址,即a指向a[0]。
故*a与a[0]等价。
a+i表示a[i]的地址,即a+i指向a[i]。
故*(a+i)与a[i]等价。
a[i]+j表示a[i][j]的地址,即a[i]+j指向a[i][i]。
故*(a[i]+j)与a[i][j]等价.
a[i][j]的地址是a[i]+j、*(a+i)+j或&a[i][j]
a[i][j]等价于*(a[i]+j)、*(*(a+i)+j)或(*(a+i))[j]
例有如下定义语句:
int(*p)[4];
那么定义p为指向一维数组的指针,该数组为int型,有4个元素。
第六章类与对象
面向对象的编程要同时考虑如何表示数据及如何处理数据。
类定义的形式:
class标识符
{……};
类由成员组成:
数据成员——描述某类对象的属性或状态,是该类对象的特征量;
成员函数——描述某类对象的行为,是对特征量的处理。
若成员函数的定义放在类定义体中,则成员函数被处理为内联函数。
成员的访问控制符:
public公有段的成员是提供给外界的接口;
protected保护段的成员在本类及其派生类中可见,外界不可见;
private私有段的成员仅在本类中可见。
各段中既可包含数据成员,也可包含成员函数。
类与外界——数据成员通常放在私有段(private),与外界隔绝;组成类接口的成员函数常放在公有段(public),供外界使用。
类的内部——成员函数对数据成员及其它成员函数具有无限制的访问权。
建立对象:
为对象P的数据成员分配内存;对P的数据成员的操作仅限于成员函数。
在类外界,通过成员运算符(.)访问对象的公有成员。
访问形式:
对象名.公有数据成员及对象名.公有成员函数(参数表)
对象与成员要捆绑在一起。
成员函数的定义放在类定义的外部时,成员函数定义形式为:
函数类型类名:
:
函数名(参数列表)
{函数体}
构造函数的作用:
在创建类的对象时,对对象作初始化。
构造函数是类的特殊的成员函数;构造函数的名字与类名相同,且没有返回值类型;声明对象时,构造函数由系统自动调用。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 主要 知识点