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) 编辑