
VS相关
志明er
这个作者很懒,什么都没留下…
展开
-
01 常量的引用
//int &ref = 10; 引用了不合法的内存,不可以 const int &reff = 10; 加入const后编译器处理方式为: int tmp = 10; const int &ref = tmp; int *p = (int*)&ref; *p = 1000; 合法内存,可以修改常量引用使用场景 用来修饰形参 void ShowValue(const int &val) { //val++; 报错,不能改 c.原创 2021-01-23 11:32:34 · 157 阅读 · 0 评论 -
01 参数三种传递方式
值传递 地址传递 引用传递注意:1、不要返回局部变量的引用2、如果函数返回值是引用,那么函数的调用可以作为引用3、不能有NULL引用,必须确保引用是和一块合法的存储单元关联4、引用必须初始化 int a = 10; int& aRef = a; 编译器自动转换为 int* const aRef = &a; 这也能说明为什么必须初始化 aRef = 20; 内部发现Aref是引用,自动帮我们转换为 *aRef = 20;...原创 2021-01-23 11:03:10 · 164 阅读 · 0 评论 -
01 引用的基本语法及注意事项
引用 就是起别名1、引用基本语法 Type &别名 = 原名void test01(){ int a = 10; int &b = a; b = 20;} 输出结果 a = b = 202、引用必须初始化void test 02(){ int &a; 错误,没有初始化 一旦初始化后不能修改,B是A的别名,则B不能是C的别名。}3、对数组建立引用void test 03(){ int arr[10]; for (int i = 0;i<1原创 2021-01-23 10:34:32 · 200 阅读 · 0 评论 -
01 尽量以const代替#define
例:#define MAX 1024;定义的宏MAX从未被编译器看到过,因为在预处理阶段,所有的MAX已经被替换为了1024.区别:1、const有类型,可以进行编译器类型安全检查,#define无类型不可进行类型检查2、const有作用域。#define默认定义到文件尾,也可用#undef A卸载宏常量...原创 2021-01-23 08:46:18 · 145 阅读 · 0 评论 -
01const分配内存情况
1、对const变量取地址,会分配临时内存。(对临时内存的修改不影响符号表)2、声明时加了extern,编译器也会分配内存(可通过地址修改值)3、用普通变量初始化const变量,也会分配内存4、自定义数据类型(struct)加const也会分配内存...原创 2021-01-23 08:23:34 · 280 阅读 · 0 评论 -
01C++对C语言的增强
1、全局变量检测增强int a;int a = 10;C通过。C++失败(重定义)。2、函数检测增强,参数类型增强,返回值检测增强,函数调用参数检测增强3、类型转换检测增强4、struct优化C++使用时可以不加struct关键字5、bool类型增强C语言没有bool。C++有bool,只有true或false6、三目运算符增强a > b ? a : b = 100;C不行,C返回的是值。C++返回的是变量,可以作为左值。...原创 2021-01-22 22:17:14 · 88 阅读 · 0 评论 -
01using声明和using编译指令
using声明:using A; 运行时生效,使用变量就近原则using编译指令:using namespace A; 编译时生效,这句话不管放在哪里就近原则无效原创 2021-01-22 21:43:25 · 162 阅读 · 0 评论 -
01命名空间namespace的使用
1、命名空间下可以放函数、变量、结构体、类namespace A{ void func(); int m_a; struct Person{}; class Animal;}2、命名空间必须定义在全局作用域下3、命名空间可以嵌套命名空间namespace A{ namespace B { int m_A = 10; }}4、命名空间是开放的,可以随时在原先的命名空间添加内容例:以下两个A空间自动合并,而不会覆盖namespace A{ namespace B原创 2021-01-22 21:22:00 · 195 阅读 · 0 评论 -
双冒号作用域运算符
#define _CRT_SECURE_NO_WARNINGS#includeusing namespace std;int atk = 200;void test01(){int atk = 100;cout << “攻击力:” << atk << endl;cout << “攻击力:” << ::atk << endl; //双冒号调用全局}int main(){test01();system(“pause”)原创 2021-01-21 12:04:01 · 171 阅读 · 0 评论 -
c4996错误
使用老库文件导致。加上 #define _CRT_SECURE_NO_WARNINGS原创 2021-01-21 11:51:12 · 118 阅读 · 0 评论 -
内存分区
原创 2020-03-22 15:22:10 · 119 阅读 · 0 评论 -
VS中Dubug和Release的详细区别
Debug 和 Release 并没有本质的区别,他们只是VC预定义提供的两组编译选项的集合,编译器只是按照预定的选项行动。如果我们愿意,我们完全可以把Debug和Release的行为完全颠倒过来。当然也可以提供其他的模式,例如自己定义一组编译选项,然后命名为MY_ABC等。习惯上,我们仍然更愿意使用VC已经定义好的名称。CONCLUSION:Debug和Release只是两个编译的选项而已,是...原创 2020-03-20 11:33:45 · 213 阅读 · 0 评论