2021年6月22日

摘要: 1.C++中new和delete是对内存分配的运算符,取代了C中的malloc和free。 2.标准C++中的字符串类取代了标准C函数库头文件中的字符数组处理函数(C中没有字符串类型)。 3.C++中用来做控制态输入输出的iostream类库替代了标准C中的stdio函数库。 4.C++中的try/ 阅读全文
posted @ 2021-06-22 16:18 超人不会灰啊 阅读(101) 评论(0) 推荐(0) 编辑

2021年6月21日

摘要: 1.数组型数据结构:该数据结构的元素是分配在连续的内存中,insert和erase操作,都会使得删除点和插入点之后的元素挪位置,所以,插入点和删除掉之后的迭代器全部失效,也就是说insert(*iter)(或erase(*iter)),然后在iter++,是没有意义的。 2.链表型数据结构:对于li 阅读全文
posted @ 2021-06-21 00:04 超人不会灰啊 阅读(91) 评论(0) 推荐(0) 编辑

2021年6月20日

摘要: 一,需要初始化的数据成员是对象的情况;二,需要初始化const修饰的类成员;三,需要初始化引用成员数据; 阅读全文
posted @ 2021-06-20 16:48 超人不会灰啊 阅读(246) 评论(0) 推荐(0) 编辑
 
摘要: 都是是指向无效内存区域(这里的无效指的是"不安全不可控")的指针,访问行为将会导致未定义行为。 1.野指针,指的是没有被初始化过的指针 因此,为了防止出错,对于指针初始化时都是赋值为 nullptr ,这样在使用时编译器就会直接报 错,产生非法内存访问。 2.悬空指针,指针最初指向的内存已经被释放了 阅读全文
posted @ 2021-06-20 14:39 超人不会灰啊 阅读(332) 评论(0) 推荐(0) 编辑
 
摘要: 1.二者均可通过增减偏移量来访问数组中的元素。就是 “[ ]”。 2.数组名不是真正意义上的指针,可以理解为常指针,所以数组名没有自增、自减等操作。就是 “++”“--”。 3.当数组名当做形参传递给调用函数后,就失去了原有特性,退化成一般指针,多了自增、自减操作,但sizeof运算符不能再得到原数 阅读全文
posted @ 2021-06-20 14:34 超人不会灰啊 阅读(189) 评论(0) 推荐(0) 编辑
 
摘要: int main() { int a[10] = {1,2,3,4,5}; int (*p)[10] = &a; int* q = a; cout << *(a + 1) << endl; // 输出2 cout << (*p)[1]<< endl; // 输出2 cout << q[1]; // 阅读全文
posted @ 2021-06-20 14:20 超人不会灰啊 阅读(666) 评论(0) 推荐(0) 编辑
 
摘要: 1.常量指针是一个不能给改变指向的指针。指针是个常量,不能中途改变指向,如int *const p。 2.指针常量是一个指针,读成常量的指针,指向一个只读变量。如int const *p或const int *p。 阅读全文
posted @ 2021-06-20 10:53 超人不会灰啊 阅读(458) 评论(0) 推荐(0) 编辑
 
摘要: 1.sizeof是运算符,并不是函数,结果在编译时得到而非运行中获得;strlen是字符处理的库函数。 2.sizeof参数可以是任何数据的类型或者数据(sizeof参数不退化);strlen的参数只能是字符指针 且结尾是'\0'的字符串。 3.因为sizeof值在编译时确定,所以不能用来得到动态分 阅读全文
posted @ 2021-06-20 01:31 超人不会灰啊 阅读(74) 评论(0) 推荐(0) 编辑
 
摘要: 1.声明仅仅是把变量的声明的位置及类型提供给编译器,并不分配内存空间;定义要在定义的地方为 其分配存储空间。 2.相同变量可以在多处声明(外部变量extern),但只能在一处定义。 阅读全文
posted @ 2021-06-20 01:10 超人不会灰啊 阅读(168) 评论(0) 推荐(0) 编辑
 
摘要: 1.宏定义在编译前完成替换,相当于直接插入代码,替换之后的代码参与编译,运行时不存在函数调用,运行就更快。函数调用就需要跳转到具体的函数,速度就更慢。 2.宏定义直接插入代码,没有返回值。函数有返回值。 3.宏定义没有参数类型检测,函数有参数类型检测。 4.宏定义后不加分号。 1.宏主要用于定义常量 阅读全文
posted @ 2021-06-20 00:28 超人不会灰啊 阅读(229) 评论(0) 推荐(0) 编辑