1、清屏函数和暂停函数
头文件stdlib.h
system(“cls”);
system(“pause”); //暂停函数,按任意键继续
2、动态内存释放的问题
int ** p = new int*[3];
p[0] = new int(0);
p[1] = new int(1);
p[2] = new int(2);
先申请一个二级指针内存空间,每个元素是一个一级指针,在给每个一级指针分配内存空间,并存入0,1,2值。那么怎么释放内存?
如果存在多级指针的内存释放,一定要从内往外释放,先释放每个一级指针内存,最后释放二级指针内存。如果先释放了二级指针内存,那就找不到指向首元素的地址了,也就找不到每个一级指针的位置,一级指针的内存还留在某个空间里得不到释放。
3、const和#define区别
(1)编译处理阶段不同:define是在预处理阶段进行宏展开,const是在编译运行阶段。
(2)类型和安全检查不同:const常量有具体的类型,在编译阶段会执行类型检查,而define没有。
(3)存储方式不同:const常量会进行内存分配(C++中,对于简单类型的临时常量会保存在符号表里面进行替换,而不会分配内存),而define仅仅是展开,不会分配内存。
(4)有些调试工具可以对const进行调试,但是不能对宏定义进行调试。
4、函数指针
int (*f)(int a) //f是函数指针
typedef int (*f)(int a) //f是一个数据类型用来定义函数的类型
//现在有一个函数
int add(int a){…}
//返回值类型和参数类型要一致
f ad = add;
ad(100); //ad就是add函数