C++程序设计知识提纲Word文档下载推荐.docx
- 文档编号:22263429
- 上传时间:2023-02-03
- 格式:DOCX
- 页数:38
- 大小:35.57KB
C++程序设计知识提纲Word文档下载推荐.docx
《C++程序设计知识提纲Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《C++程序设计知识提纲Word文档下载推荐.docx(38页珍藏版)》请在冰豆网上搜索。
ASII码有128个字符,0-31和128为不可见字符(控制字符)
浮点型:
小数形式、指数形式
数据类型存间(字节)长度(位)取值范围
字符char18-128~127
unsignedchar180~225
整数短整型short216-32768~32767
Unsignedshort2160~65535
整型int432-231~(231-1)
Unsignedint4320~(232-1)
长整型long432-231~(231-1)
Unsignedlong4320~(232-1)
实数float432-3.4×
10-38~3.4×
1038
Double864-1.7×
10-308~1.7×
10308
Longdouble864-1.7×
2.1.2数据变量的存间、长度和取值范围
数据变量的存间:
储存变量的内存空间。
整数存储安置规则:
变量值的高位字节存于高地址的内存单元中,低位字节存于低地址的内存单元中。
存间长度运算符:
sizeof(某变量类型)
变量的长度:
变量的字节数×
8=变量值的二进制位数。
2.1.3数据变量的表示
整数的表示:
八进制:
以0开头。
十六进制:
以0x或0X开头
后缀L或l为long型;
后缀U或u为unsignedint型;
同时后缀L和U为unsignedlong型。
实数的表示
一般形式:
科学计数法:
0.75e+9表示0.75×
109,小数点前留一位为标准科学计数法;
E可大写可小写,前后必须有数字。
后缀F或f为float型,无后缀默认为double型。
字符的表示:
对于可以通过键盘输入的、可显示的字符,可用单引号阔气来;
对于不可以通过键盘输入的,不可显示的字符,用转义字符‘\’;
对ASCII码中任一字符,都可用反斜杠后跟一个八进制或十六进制数用单引号括起来表示‘\101’和‘\x41’都表示字符A。
字符可以对整型变量赋值,ASCII码范围内的整数也可以对字符型变量赋值,字符进行运算时,以其ASCII码值参与运算。
2.1.4字符串常量及其值
字符串常量是用一对英文双引号括起来的不可改变的字符序列。
2.1.5数据变量的声明和赋值
2.1.6数据变量的访问
2.2别名
2.2.1别名变量概念
2.2.2别名变量的声明
2.2.3用别名对变量进行访问
2.3指针
2.3.1地址概念
2.3.2指针变量概念
2.3.3指针变量的声明和赋值
2.3.4用指针对变量进行访问
C++动态内存分配:
new类型名(初始值列表)//开辟存储类型空间
new类型名[下标表达式1][下标表达式2]//创建储存数组的空间
new类名(初始值列表)//创建对象
如果内存开辟失败,对应指针应该为NULL,这是判断内存是否成功被开辟的标志:
int*pnValue;
pnValue=newint(3);
if(pnValue==NULL)exit(0);
开辟空间后一定要保持指针始终指向给内存
对于动态数组中的操作:
一是利用下标操作,二是另外声明一个指针来遍历数组。
动态内存开辟后,最好进行初始化:
memset(指针名,初始值,开辟空间的总字节数);
sizeof(*p)计算出的是指针所占内存的大小,并不是指向内存空间的大小
利用delete释放指针后将指针置为NULL;
delete[]plArray;
plArray=NULL;
C风格的动态内存分配方法:
开辟动态内存malloc函数:
void*malloc(size_tsize)
包含头文件:
<
stdlib.h>
、<
malloc.h>
size_t是需要分配内存的字节数
如果开辟内存成功,返回void类型指针;
如果失败返回空指针
如果需要的不是void类型内存空间,需要进行强制类型转换
释放函数free:
voidfree(void*pointer);
函数间的动态内存传递:
利用引用类型参数传递动态内存(推荐使用):
voidGetMen(char*&
p,size_tsize);
利用二级指针参数传递动态内存:
voidGetMen(char**p,size_tsize);
利用函数返回至来传递动态内存
char*GetMen(size_tsize);
2.3.5二级指针变量概念
2.3.6使用指针要特别注意指针的指向
浅复制容易产生野指针,深复制会产生大量资源
智能指针
2.4对数据变量的保护
2.4.1用const声明常值数据变量
#define宏定义(预处理命令):
#define常量名值
const数据类型变量名=常值
数据类型const变量名=常值
常量的值保持不变,不允许再赋值
2.4.2在声明中用const对指针变量进行限定
声明常值指针变量:
数据类型*const指针变量名=常地址;
指针变量的值保持不变,指向恒定
声明只读指针变量:
const数据类型*指针变量名;
指针所指只可读不可写
声明常值只读指针变量:
const数据类型*const指针变量名=常地址;
2.4.3在声明中用const对别名变量进行限定
声明只读别名变量:
const数据类型&
别名变量名=变量名
第三章数据的运算和简单的输入输出运算
3.1运算符和表达式
运算符优先级:
圆括弧是一级优先
二级优先全是单目运算符,可称单目块
3~5级可称为加减乘除块。
其中左右位移运算相当于乘和除
6、7级优先可称为关系块
8~12级优先可称为逻辑块,其中8~10是按位逻辑块
13~15优先级可称为条件、赋值、逗号块
3.2sizeof()运算符和sizeof()表达式
3.3算数运算符和算数表达式
3.4关系运算符和关系表达式
3.5逻辑运算符和逻辑表达式
3.6位运算符和位运算表达式
3.7条件运算符和条件表达式
3.8赋值运算符和赋值表达式
3.9逗号运算符和逗号表达式
3.10基本数据混合运算是数据类型的转换
3.10.1隐性类型转换
赋值运算中的隐性类型转换
如果有操作数长度长,而左操作数长度短,赋值时按低位优先的原则将右操作数赋入左操作数存间,存间装满为止,剩下的高位数被舍弃。
3.10.2强迫类型转换
语法形式:
类型说明符(表达式);
(类型说明符)表达式;
(类型说明符)(表达式)
3.11指针的增减运算
3.12简单的输入输出运算
3.12.1输入流和输出流
3.12.2提取运算符>
>
和插入运算符<
3.12.3提取表达式和插入表达式
3.12.4基本数据的输入和输出
字符串的输出
想要输出一条字符串,只要将字符串的首字符指针作为插入运算符<
的右操作数就行:
cout<
”dkfjs”;
//双引号括起来的字符串可以看做是一个字符串表达式,字符串表达式的值就是字符串的周字符指针
char*p=“skdjf”;
p;
3.13简单输入输出的格式控制
3.13.1输入/输出的默认格式
整数按十进制数出
实数按十进制浮点输出,有效数字6位
当实数的整数部分大于或等于7位时,则转化为科学计数法输出。
当小数点后连续有4个或4个以上零,则转换为科学计数法输出
以上输出宽度(域宽所占字符数)均默认为0,靠右对齐若实际输出字符大于域宽时,按实际字符输出
3.13.2用格式控制符对格式进行控制
控制项目控制符功能有效期
进制dec输入或输出整数时用十进制表示长效
Hex输入输出整数时用十六进制表示长效iostream
0ct输入输出整数时用八进制表示长效
换行endl输出时换行并进行刷新短效无
域宽setw(int)出数据的域宽,靠右短效
显示余项空格填充iomanip
填充setfill(char)对输出域余用字符填充长效
精度setprecision(int)设置实数输出精度长效
第四章程序的流程控制
4.1程序流程的基本结构
4.2选择结构语句
4.3循环结构语句
4.4其他控制语句和函数
4.4.1break语句
4.4.2continue语句
4.4.3goto语句
4.4.4abort函数和exit函数
Abort函数和exit函数都是C++标准库cstdlib中的两个函数。
Voidabort()
Voidexit(intstatus)
这两个函数的作用都是终止整个程序的运行,将控制返还给操作系统。
但前者仅仅结束程序的运行,不做任何善后工作。
而后者在终止前做些收尾工作,例如关闭打开的文件、写完缓冲输出的内容、收回变量存间等。
参数status置0表示正常退出,置1则表示异常退出
第五章函数
5.1函数的概念
5.1.1函数的概述
5.1.2函数的定义
当返回值的类型为int型时,可省略标识符
5.2对函数的调用
5.2.1被调函数的函数原型声明
函数原型声明中的形式参数表,只要求按函数定义中各形参的类型、次序、个数写正确就行,至于形参的名称不写甚至写错也不要紧。
5.2.2函数的调用
5.2.3函数调用流程
三步骤:
中断、转移、返回。
在中断时,把当时的现场数据和地址储存起来。
在返回时把现场数据和地址取出。
根据这地址就能精确的回到原流程处
5.2.4函数的递归调用
要形成函数的递归调用,这递归关系和递归终止条件二者缺一不可
5.3函数内外变量的作用域和生存期
5.3.1作用域
函数内的块作用域:
用花括号括起来的部分称为一个块,在块内声明的变量,其作用域开始于变量的声明处,结束于块的结尾处。
在同一作用域内,不能声明同名变量
在没有互相包含关系的不同的作用域中,允许声明同名变量。
它们各在各的作用域内使用,互不干扰。
在互相间又包含关系的作用域中,也允许声明同名变量。
不过,在使用同名变量时,在被包含的内层作用域中,只能使用内层作用域所声明的同名变量同时自动覆盖掉外层的同名变量。
或者说,在内层中,对外层的同名变量是不可见的。
这种情况也可简称为“内层同名优先”。
和for语句有关的作用域:
若在for语句的圆括弧内声明了某变量,则该变量就如同在for语句所在的作用域内声明一样,该变量作用域从声明处开始至for语句所在作用域结束为止。
若在for语句的循环体内声明了某变量,则该变量的作用域就只在循环体范围内,作用域从声明处开始至循环体结束处为止。
文件作用域:
在所有函数值为所声明的变量称为全局变量。
全局变量的作用域是从声明处开始到文件结束处为止。
这个作用域称为文件作用域。
如果要在局部变量的作用域内访问与局部变量同名的全局变量,则可在同名变量前加域运算符“:
:
”来进行访问。
5.3.2生存期
静态生存期:
从变量的作用域开始,变量因系统配给空间而开始存活。
如果在作用与结束时,存间未被收回而仍然占用着。
要一直等到主函数结束时,也就是整个程序结束时,系统才收回该变量的存间,从而使该变量消亡。
对于局部变量,若在其声明语句的类型前面加static,则该变量的生存期就是静态生存期。
变量就是静态变量。
对于全局变量,无需加static,他天生就是静态变量。
因为他本来就是从声明处开始获得存间而存活,直到主函数结束,存间才被收回而消亡
静态变量必须在声明语句中设置初值。
如未设置初值,则系统会自动设置初值0。
静态变量的声明语句只执行一次。
5.4函数内外的数据传递
5.4.1函数通过参数进行数据传递
参数的别名传递:
访问别名变量于被调函数之内,效达实名变量于主调函数之中。
(双向传递)
参数的地址传递:
访问指针所指于被调函数之内,效达所指变量于主调函数之中。
参数的值传递:
主调函数将数据传递给被调函数。
(单向传递)
5.4.2具有默认值的参数传递
具有默认参数的函数:
默认参数的说明必须出现在函数调用之前,不可重复说明。
参数的默认值可以使表达式,但表达式必须有确定的值。
默认参数可以有多个,但必须在参数表中靠右边排列。
同一个函数在不同的作用域内,可提供不同的默认参数值。
(在不同作用域中进行声明)
5.4.3函数通过返回值进行数据传递
返回一个基本数据值
返回一个静态变量的地址:
静态变量延长了变量的生存期,但作用域并未改变。
所以可以通过访问指针所指,来访问变量名失效的静态变量
返回一个静态变量的别名:
在主调函数中,函数调用式可作为该静态变量的别名来使用
5.4.4函数通过全局变量传递数据
除非特别需要,一般不使用全局变量
5.5内联函数和函数的重载
内联函数(在定义函数时,在前面冠以关键字inline):
内联函数也应该定义在前,使用在后。
在C++中,除函数体内含有循环、switch分支和复杂嵌套的if语句外,所有函数均可定义为内联函数。
用户确定函数的内联,只是一个“内联”的建议。
到时候是否真的照“内联”执行,要由编译器决定。
函数重载:
形参类型不同;
形参个数不同。
5.6用指针对函数进行操作处理
5.6.1函数指针
函数地址:
首内存单元地址叫做函数的入口地址,简称为函数地址
函数名就是函数地址
函数指针变量:
专门用来存放函数地址的变量。
5.6.2函数指针的声明和赋值
声明一个函数指针变量时,需要说明所指函数的类型和形参表。
数据类型(*函数指针名)(形参表);
函数指针变量的初始化和赋值:
Doublefun(int,int,double);
Double(*p)(int,int,double)=fun;
Double(*p)(int,int,double);
P=fun;
Doublefun(int,int,double),(*p)(int,int,double)=fun;
5.6.3用函数指针调用函数
用函数指针调用函数的形式和用函数名调用函数的形式是一致的,只不过是把函数名换成函数指针名:
函数指针名(实际参数表);
5.6.4用通用函数处理函数
主函数以具体函数的地址为实参调用通用函数,而通用函数则以同类型函数指针变量作为形参,来接纳具体函数的地址。
5.7函数的多文件组织
5.7.1模块化程序设计
模块化程序设计:
自顶而下,逐步细化,模块化。
5.7.2原文件之间的访问
源文件之间对全局变量的访问:
如果本文件中所声明的全局变量属本文件私用,不允许别的文件访问,则必须在全局变量类型前加修饰词static。
如果本文件要用到别的文件中允许访问的全局变量,则本着先声明后使用的原则,应先照原样做变量声明在声明前加修饰词extern。
原文件之间对函数的访问:
与全局变量类同。
不允许别的文件访问,在原型声明前加static,使用其他文件中可以访问的函数,做原型声明,并在前加extern
5.7.3头文件
头文件:
将函数原型和全局变量(加extern修饰)集中起来,还有一些常数定义,放在一起写成一个文件,供各个相关的源文件使用
5.7.4多文件组织的编译和链接
包含文件:
在定义main函数的源文件中,将组成同一程序的其他文件用包含指令(#include)包含进来。
由编译程序对这些文件一起编译,并链接成一个可执行文件。
工程文件的方法:
将组成一个程序的所有文件都加到工程文件中,由编译器自动完成多文件组织的编译和链接。
5.8编译预处理
5.8.1#include指令
又叫文件包含指令。
使用:
执行时将所指定的文件嵌入到该语句处,替换该语句。
可嵌套使用。
形式:
#include<
文件名>
用于包含C++库函数头文件。
搜索该文件时系统直接到存放C++库函数头文件所在的目录中查找所要包含的文件,这叫按标准方式搜索文件。
#include”文件名”:
用于包含用户自己编写的头文件。
系统先在当前目录中搜索该文件,若搜索不到,再按标准方式进行搜索。
5.8.2#define和#undef指令
#define指令(宏指令):
#define宏名宏定义内容
宏名常用大写字母表示;
可以出现在程序中的任何位置,一般放在原文件开头;
在宏扩展时,只是用原封不动的宏定义内容来替换宏名;
当宏名出现在字符串中时,编译预处理对宏名不进行宏拓展。
#undef指令(终止宏指令):
#undef宏名
终止宏的作用域
5.9条件编译
5.9.1以宏名已被定义或未被定义作为条件
#ifdef宏名
程序段
#endif
程序段1
else
程序段2
#ifndef宏名
#ifndef
5.9.2以表达式逻辑为1或0作为条件
#if表达式
5.9.3关于条件编译的说明
表达式必须有确定的值,只能是常量的运算。
可以出现在程序中的任何位置。
第六章数组
6.1一维数组
6.1.1一维数组的声明及初始化
6.1.2对一维数组元素的直接访问
6.1.3用一维数组名对元素进行访问
一维数组名既是整个数组之名同时又是数组首元素之地址。
数组名不是变量,系统不配给它变量存间。
因此对数组名不能作赋值、自增或自减等涉赋运算,不能进行自增或自减走步。
6.1.4用指针变量对一维数组元素进行访问
用元素指针变量做被调函数形参
用一维数组做被调函数形参:
Voidfun(doublex[8]);
Voidfun(doublex[],intn);
Voidfun(double*x,intn);
6.1.5用数组名实参调用函数对一维数组进行处理
6.2二维数组
6.2.1二维数组的声明及初始化
6.2.2对二维数组元素的直接访问
6.2.3用二维数组名对元素进行访问
二维数组名是首行地址,是指向首行的指针。
所指目标是行,所以是按行走步的,走的是行步。
各行的数组名是各行的首元素地址,所指目标是元素,所以是按元素走步的。
实际是按列走步,走的是列步
*(*(b+i)+j)等价于b[i][j]
系统不作为变量配给存间,不可做赋值、自增或自减运算。
二维数组的首元素地址可表示为:
&
b[0][0]、&
b[0]、*b
6.2.4用指针变量对二维数组元素进行访问
元素指针变量:
指向元素的指针,按元素走步。
二维数组名是首行指针按行走步,元素指针变量按元素走步。
所以,不能直接用二维数组名对元素指针赋值
intb[3][5];
int*p;
p=(int*)b;
实在要赋值,必须先按指针的类型进行强制类型转换
*(p+n*i+j)等价于b[i][j]
一维数组指针变量:
数据类型(*指针变量名)[常量表达式(与二维数组列数相等)]
可以用二维数组名直接赋值
6.2.5用首元素地址或数组名作实参调用函数对二维数组进行处理
效果直达主调函数
6.3关于字符串的处理
6.3.1字符串的输入和输出
用一维数组对字符串逐个字符输入和输出:
采用循环语句
用“cin>
”和“cout<
”对字符串进行输入和输出:
只需给出数组名
无法输入空格
用函数cin.getline对字符串进行输入:
cin.getline(首地址,长度)
6.3.2用一维字符串数组处理字符串
用字符串初始化一维字符数组:
采用逐个字符初始化时,末尾加‘\0’;
字符串整体初始化:
chars2[20]={“asting”};
Chars3[20]=“astring”;
6.3.3用库函数处理字符串
cstring
复制:
char*strcpy(charx[],char*y)将y复制到x中
拼接:
char*strcat(charx[],char*y)2
6.4关于字符串组的处理
6.4.1用二维数组处理字符串组
6.4.2用一维字符指针数组处理字符串组
6.4.3用一维字符指针数组名做实参调用函数处理字符串组
6.5动态配给存间
6.5.1new运算符的用法
同类型指针变量=new类型名;
同类型指针变量=new类型名(初值);
同类型指针变量=new类型名[元素个数];
同类型指针变量=new类型名[行数][列数]
配给成功返回存间地址;
配给失败返回空指针0;
6.5.2delete运算符的用法
delete指针名
delete[]指针名
delete[行数]指针名
第七章枚举类型和结构类型
7.1枚举类型
7.1.1枚举类型概念
枚举类型:
取值范围只局限在某些数据组成的集合之内的变量。
枚举类型的定义:
enum枚举类型名(枚举元素列表)
枚举元素又叫枚举值或枚举常量
枚举元素的整型值:
枚举元素具有整形值,若不另行设置,枚举元素的整型值依次默认为0、1、2、3……。
设置整型值:
Enumweekday{
sunday=7,Monday=1,Tuesday,Wednesday,Thursday,Friday,Saturday
};
对于Monday以后的枚举元素的值未设置,系统会按顺序逐个加1
在数学运算时枚举型数据会自动转换为整型值参与运算。
7.1.2枚举变量的声明和赋值
枚举变量的声明:
枚举类型名枚举变量名;
枚举变量既已声明系统会对枚举变量配给int型存间,每个枚举变量存间占四个内存单元
声明的三种方法:
在定义枚举类型以后,另行声明;
在定义枚举类型的同时进行声明;
在定义枚举类型时,不取枚举类型名,直接声明枚举变量
赋值:
可以用枚举元素对枚举变
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- C+ 程序设计 知识 提纲