C++考前复习简略知识点

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

C++考前复习简略知识点

第五章数组与指针

1,数组不能进行整体访问和处理,比如要输出数组,不能使用cout<

2,数组做为函数的参数时,一维数组[ ]中是空的,多维数组只可省略最高维

3,再次强调,有n个数据的数组,下标是从0到n-1,所以循环语句应该写为for(i=0; 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(长度)头函数名#include

当然处理字符串用string类是最方便的啦,头函数名#include

第六章模板与数据结构

13,模板参数名要是正确的标识符,以字母或_开头,包含字母、数字、字符,不会与会变蓝色的关键字重名

14,对半查找法,关键的地方就在于low=mid+1 和high=mid-1,以及最开始的mi d= -1赋初值,升序对半插入排序法类似

15,升序直接插入排序法,从第一个开始循环,与它前面所有的元素一一比较,直到找到第一个比它小的,排它后面。注意,查找与移动同时进行

16,冒泡排序法,两两比较,依次将小的数推前,注意布尔数noswap的用法,开始置t ure,有交换的话置false,判断循环的条件就是if(noswap)

17,直接选择排序,从第一个开始循环,找出它后面的最小的那个元素,和其交换

18,指针数组,例*name[7],每个元素都是一个指针,比二维数组节省空间

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,用动态分配来定义数组的最大优点就是,大小可以根据实际需要来更改,不像静态分配,经常“大开小用”,浪费内存空间例cout<<”请输入动态数组的元素个数”<

Cin>>n;

p=new char[n]; 根据实际需要申请内存空间

由于n的大小随时改变,所以没有对应的初始化式,不可对数组进行初始化,与静态数组不同

26,动态分配申请失败,new操作符就返回一个空指针NULL,撤销了目标后,p本身并没有消失,并且成为了一个没有指向任何有效地址的空悬指针,建议将p置空NULL 27,delete要跟new配套使用,如果new返回的指针值丢失,那么分配的自由存储空间就无法回收,造成内存泄漏。重复释放的话也是危险的,第一次释放后该空间可能已经分配给新的对象,再一次释放则会使新对象丢失,所以释放后应该把p置空

28,在哪个域使用的new建立的空间,则应该在相同的域用delete进行释放,例,在函数内建立,而在函数外释放是很容易出错的

29,通过new建立的对象要调用构造函数,通过

相关文档
最新文档