C++常见知识点总结

来源:互联网 发布:java定义数组并赋值 编辑:程序博客网 时间:2024/06/09 15:07
1.采用#include“< >”方式进行包含的头文件表示让编译器在编译器的预设标准路径下去进行搜索相应的头文件,如果找不到则报错。而#include "":表示首先工作目录下开始搜索,对于自定义文件搜索比较快,然后搜索整个磁盘。

2.“%-30.4f”在print中使用,其中,-:左对齐, 30:最小字段宽度,.4:精确度保留小数4位,e:科学计数法;

3.static与const之间的区别:static静态变量存储在静态域中,static变量(注意是变量)无论局部全局初始化为初始化链接期都被分配到了data段,final常量编译器存储在常量池中。

3.堆和栈的部分区别:堆是程序员进行申请和释放的,因此堆是向上,也就是向高地址方向的!栈是系统进行释放的,且栈区大小一般是定的2M,因此栈是向下的,静态局部变量、静态全局变量和全局变量的区别,静态变量没有初始化时,系统会给默认值,而全局变量不会,全局变量在整个工程中都是可见的,而静态全局变量只在本文件中可见,静态局部变量只在此函数内部可见,但函数结束后不释放!

4.如果一个类中声明了纯虚函数,其派生类中没有对该函数定义,那该函数在派生类中仍为纯虚函数,范式包含储蓄函数的类都是抽象类。通常重载函数调用的依据是函数名、参数类型、参数个数。内联函数实在编译时将目标代码插入的。

5.常量指针:指针指向的对象是常量,那么这个对象不能被更改。

1)const int *p;     //指针变量p指向的整型常量,p的值可以改变,但是不能试图改变指向的整型常数

2)int const *p;     

常量指针的使用要注意,指针指向的对象不能通过这个指针来修改,可是仍然可以通过原来的声明修改,也就是说常量指针可以被赋值为变量的地址,之所以叫做常量指针,是限制了通过这个指针修改变量的值,虽然常量指针指向的对象不能变化,可是因为常量指针是一个变量,因此,常量指针可以不被赋初始值,且可以被重新赋值。

6.指针常量:指针常量的值是指针,这个值因为是常量,所以不能被赋值。

int a;

int *const b = &a; //const放在指针声明操作符的右侧    ,const修饰的是b,指针变量b的值不能改变

因为指针常量是一个常量,在声明的时候一定要给它赋初始值。一旦赋值,以后这个常量再也不能指向别的地址。

虽然指针常量的值不能变,可是它指向的对象是可变的,因为我们并没有限制它指向的对象是常量。


7.#define和const相比有如下劣势:

<1>.const定义常量是有数据类型的,而#define 宏定义常量却没有。

<2>.const常量有数据类型,而宏常量没有数据类型。编译器可以对const进行类型安全检查,而后者只进行字符串替换,没有安全检查,

<3>有些集成化的调试工具对const常量进行调试,但是不能对宏常量进行调试。


8.实型常量中的e前后必须均有数据,且其后必须为整数。


9.实型常量又称实数或浮点数。在C语言中可以用两种形式表示一个实型常量。<1>小数形式由数字和小数点组成的一种实数表示形式,如0.123,.123,123,0.0,必须要有小数点。<2>指数形式


10.类中变量的初始化的顺序是其声明的顺序,跟初始化表中的顺序无关。


0 0
原创粉丝点击