C/C++深入解析
技术猎人
多动笔应该改成多打字了!
展开
-
在循环体(for, while等)内定义对象和变量的注意事项(C++)
循环体内定义变量容易产生莫名其妙的 bug ,其实是对循环理解不透彻导致的,本文通过几段代码来理清楚这个问题。 for(int i = 0; i < 5; i++){ int x; cout << "x: " << x << " x的地址: " << &x << endl; x++; }运行结果:x: 1976155616 x的地址: 0x7ffe7ab原创 2020-07-16 17:45:49 · 16800 阅读 · 6 评论 -
C++中引用和指针的区别
引用和指针在汇编层面的实现方式是一样的,都是传递一个内存块(对象)的地址。C++在C语言的基础上引入了引用的概念,其目地是使指针这种高效的传递方式使用起来更加规范化和安全。指针的使用相当灵活,程序员对它的操作权限无限的大,以至于可以引发很多内存安全问题。引用不同,在一个引用的生命周期里编译器对它的行为都进行了全面的监控(不能重新赋值等)。所以我认为引用就是为了更加安全和方便的使用指针类操作设计的。...原创 2020-06-30 09:13:58 · 196 阅读 · 0 评论 -
C++中的字符串到底是什么!
待写!原创 2020-01-03 22:39:09 · 462 阅读 · 1 评论 -
C/C++中区分栈和堆数据块的原因
其实栈和堆本质相同。不同处是:栈数据块的数据指针所有权是编译器;管理堆数据块的数据指针所有权是程序本身。也就是说栈的数据指针移动是在源码编译时候就确定的,比执行完某一个函数释放临时变量后栈顶指针回跳到哪个位置编译时候就确定好了,不需要程序员管理。这样带来的弊端包括:不能申请编译前不能确定大小的数据块,比如数组a[ 10 ],a后边的[ ]中必须是常量!而堆的数据指针移动是在程序运行时候确定的,...原创 2019-09-07 11:27:44 · 149 阅读 · 0 评论