摘要: 1、内存溢出 内存溢出是指程序在申请内存时没有足够的内存空间供其使用。原因可能如下: (1)内存中加载的数据过于庞大; (2)代码中存在死循环; (3)递归调用太深,导致堆栈溢出等; (4)内存泄漏最终导致内存溢出; 2、内存泄漏 内存泄漏是指使用new申请内存, 但是使用完后没有使用delete释 阅读全文
posted @ 2019-03-17 22:35 Love63 阅读(3311) 评论(0) 推荐(0)
摘要: C++类和结构体的区别? 结构体默认数据访问控制是public; 类默认数据访问控制是private; (在C中,结构体是数据类型,只能定义数据类型不能定义函数) 阅读全文
posted @ 2019-03-17 22:21 Love63 阅读(385) 评论(0) 推荐(0)
摘要: C++内联函数、宏定义和普通函数的区别? 宏定义:在预处理阶段进行简单的文本替换,不会进行参数类型检查; 内联函数:编译器会在每次调用内联函数的地方直接将内联函数的内容展开,这样可以省去函数压栈和出栈的开销提高效率,会进行参数类型检查; 普通函数:在函数调用时,跳转到函数地址执行代码; 阅读全文
posted @ 2019-03-17 22:19 Love63 阅读(331) 评论(0) 推荐(0)
摘要: C++指针和引用的区别 (1)当引用创建时,必须被初始化。指针可以在任何时候初始化。 (2)一旦一个引用被初始化指向一个对象,它就不能被改变成为另一个对象的引用。而指针可以在任何时候指向另一个对象。 (3)不可能为NULL引用,但可以有空指针。 (4)指针可以有多级,但是引用只能是一级(int ** 阅读全文
posted @ 2019-03-12 22:44 Love63 阅读(145) 评论(0) 推荐(0)
摘要: 1、函数指针(指向函数的指针) int (*fun2)(int x); fun2与" * " 先结合,构成了一个指针的定义,指针变量名为fun2, int 修饰的是函数的返回值。函数在这里没有名字,是个匿名的函数。 2、指针函数 (返回值为指针的函数) int *fun1(int x); " () 阅读全文
posted @ 2019-03-10 22:25 Love63 阅读(192) 评论(0) 推荐(0)
摘要: (1)指针数组 (存储指针的数组) int *p1[10]; " [] "的优先级高于" * ",所以p1与" [] "先结合,构成一个数组的定义,int * 修饰的是数组的内容,即数组的每个元素。 (2)数组指针 (指向数组的指针) int (*p2)[10]; " () "的优先级高于" [] 阅读全文
posted @ 2019-03-10 22:15 Love63 阅读(358) 评论(0) 推荐(0)
摘要: 一、面向过程中的static 1、修饰全局变量(静态全局变量) (1)静态全局变量在全局数据区分配内存; (2)静态全局变量在声明处初始化,未经初始化的静态全局变量会被程序自动初始化为0; (3)静态全局变量的作用域在声明它的整个文件是可见的,而在文件之外是不可见的。 2、修饰局部变量(静态局部变量 阅读全文
posted @ 2019-03-10 21:58 Love63 阅读(115) 评论(0) 推荐(0)
摘要: const和#define都是用来定义常量。 const和#define的区别? (1)#define在预处理阶段起作用;const在编译和运行阶段起作用; (2)#define只是简单的字符串替换,没有类检查;const有类型检查。 (3)#define常量不能进行调试; const常量可以进行调 阅读全文
posted @ 2019-03-10 21:25 Love63 阅读(135) 评论(0) 推荐(0)
摘要: 1、sizeof和strlen的区别? strlen是函数,参数必须为字符指针;在运行时才计算,用来计算字符串的长度,遇到第一个NULL('\0')结束(不包括'\0')。 sizeof是运算符,参数可以是变量和数据类型; 在编译时计算,计算变量占用的内存空间(不是实际大小)。 当数组名作为参数时, 阅读全文
posted @ 2019-03-10 21:17 Love63 阅读(116) 评论(0) 推荐(0)
摘要: typedef关键字作用:为一种数据类型定义一个新的名字。(数据类型包括内部数据类型(int, char等)和自定义数据类型struct) 阅读全文
posted @ 2019-03-10 21:00 Love63 阅读(105) 评论(0) 推荐(0)