- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
C++考前复习简略知识点.doc
C++考前复习简略知识点
第五章 数组与指针
1,数组不能进行整体访问和处理,比如要输出数组,不能使用coutget[ ];这样的语句,而要采用循环
2,数组做为函数的参数时,一维数组[ ]中是空的,多维数组只可省略最高维
3,再次强调,有n个数据的数组,下标是从0到n-1,所以循环语句应该写为for(i=0;in;i++)couta[i];不是=
4,在对指针进行操作前,一定要确定指向,否则产生严重后果
5,指针常量和常量指针
指针常量 例:int *const p;指针的指向不能改变,但是值可以变
常量指针 例:const int *p;指针的指向可以改变,但是那个值不能改变
这个有点不太好记忆,常量指针重点是常量,值不能变
6,this指针是指向对象的,this指针不一定都要写成显示的,静态成员函数没有this指针
7,数组名是首元素的地址,大家都知道,但是不能用a++这样的形式来指向a[1],因为数组名可以理解为是一个指针常量,指向不能改变。
8,指针相减,如果*p1和*p2是分别指向a[2]和a[6]的指针,那么p2-p1就等于4,中间元素的个数
9,指向多维数组的指针比较复杂,还是记几个例子吧(用-代表文字指向,但是语法上是错的哈)
Int b[4][4]??? b+3-b[3]这里我的理解就是二维数组是由一维数组作为元素的数组,所以指向的是整个第三行
*(b+3)-b[3][0]???? *(*(b+3))=b[3][0]
*(b+3)+3-b[3][3]?? *(*(b+3)+3)=b[3][3]
理解很重要。。。
10,指针做函数参数,实参必须是地址或者数组名;引用做函数参数,实参必须是变量或对象本身。实参为数组的时候,只能用指针而不能引用,因为数组的引用不存在
11,函数的返回值如果是指针的话,那么它所指向的那个数据生命期不应该只在函数中,所以应该是全局变量等(我只知道个全局变量。。。)
12,一些比较常用的字符串处理函数strcat---catenate(连接)? strcmp----compare(比较)
?? strcpy---copy(复制)?? strlen---length(长度)头函数名#includecstring
当然处理字符串用string类是最方便的啦,头函数名#includestring
?
第六章 模板与数据结构
13,模板参数名要是正确的标识符,以字母或_开头,包含字母、数字、字符,不会与会变蓝色的关键字重名
14,对半查找法,关键的地方就在于low=mid+1 和high=mid-1,以及最开始的mid= -1赋初值,升序对半插入排序法类似
15,升序直接插入排序法,从第一个开始循环,与它前面所有的元素一一比较,直到找到第一个比它小的,排它后面。注意,查找与移动同时进行
16,冒泡排序法,两两比较,依次将小的数推前,注意布尔数noswap的用法,开始置ture,有交换的话置false,判断循环的条件就是if(noswap)
17,直接选择排序,从第一个开始循环,找出它后面的最小的那个元素,和其交换
18,指针数组,例*name[7],每个元素都是一个指针,比二维数组节省空间
O N E ? ? T W O ? ? T H R E E ?
如果用a[3][5]的二维数组,则要浪费4个存储单元
?
19,当一个函数需要将另一个函数作为参数的时候,必须借用指向函数的指针,因为函数本身不可以做参数
定义一个指向函数的指针,并初始化,例
int (*pf)(char*,char*)=scopy;
其中函数名scopy就是该函数的入口地址,类似于数组名是数组存储区域的开始地址
20,指向类成员的指针,必须指明属于哪个类,例
Float(Student::*pf)()=Student::SetScore;则该指针指向了Student类里的成员函数SetScore,语句student1.*pf就相当于调用了student1.SetScore
同样也有指向数组成员的指针
21,由于静态成员函数没有this指针,所以指向静态成员函数的指针是普通指针
?
第七章 动态内存分配
22,new运算符返回的是一个指向所分配类型变量(对象)的指针,必须显式初始化。例 int *p=new int(5);
P为指针变量名,5是初始化式
23,delete释放的是指针所指的目标的内存空间,但指针本身依然存在,该指针本身所占内存空间并未释放
24,撤销动态数组的空间时,注意方括号[]的使用
delete []p? 撤销整个数组
delete p??? 只撤销数组的第一个元素
25,用动态分配来定义数组的最大优点就是,大小可以根据实际需要来更改,不像静态分配,经常“大开小用”,浪
文档评论(0)