c++
uu2ww2
努力提升 准备逃离
展开
-
关于前置声明
首先:目前不推荐使用前置声明, 最好使用#include,即使你不太了解前置声明也是么有关系的。https://www.zhihu.com/question/63201378前置声明是什么?https://www.geeksforgeeks.org/what-are-forward-declarations-in-c/使用前置声明需要注意什么?https://bl...原创 2020-04-20 18:31:39 · 271 阅读 · 0 评论 -
core文件不生成
https://www.cnblogs.com/sunbin2019/articles/10988995.html原创 2020-02-24 23:34:04 · 289 阅读 · 0 评论 -
CMake资料整理
https://blog.csdn.net/qq_20123207/article/details/82563518https://blog.csdn.net/ajianyingxiaoqinghan/article/details/70230902?depth_1-utm_source=distribute.pc_relevant.none-task&utm_source=distr...原创 2020-02-24 22:11:00 · 149 阅读 · 0 评论 -
程序员的自我修养
在链接之前:编译器默认函数和初始化的全局变量为强符号,未初始化的全局变量为弱符号。未初始化的全局变量在common段, 但并不是所有的弱符号都在common段,也可以在data段。 如下所示 。链接之后:在链接阶段生成的二进制文件中,则没有comment段了...原创 2019-12-23 22:48:21 · 119 阅读 · 0 评论 -
google C++ 规范 之 命令空间
为什么要有命令空间:命名空间是用来组织和重用代码的。如同名字一样的意思,NameSpace(名字空间),之所以出来这样一个东西,是因为人类可用的单词数太少,并且不同的人写的程序不可能所有的变量都没有重名现象,对于库来说,这个问题尤其严重,如果两个人写的库文件中出现同名的变量或函数(不可避免),使用起来就有问题了。为了解决这个问题,引入了名字空间这个概念,通过使用 namespace xxx;你...原创 2019-05-14 02:00:22 · 340 阅读 · 0 评论 -
C++ union
摘录自:https://blog.csdn.net/adaixiaoxiao/article/details/785890051、union中可以定义多个成员,union的大小由最大的成员的大小决定。2、union成员共享同一块大小的内存,一次只能使用其中的一个成员。3、对某一个成员赋值,会覆盖其他成员的值(也不奇怪,因为他们共享一块内存。但前提是成员所占字节数相同,当成员所占字节数...原创 2019-05-14 12:54:44 · 443 阅读 · 0 评论 -
C++ extern
http://c.biancheng.net/view/404.htmlhttps://blog.csdn.net/lishuhuakai/article/details/45944735注意一:在C语言中, extern关键字是可以省略的。但是在C++ 语言中,全局变量的extern关键字是不可以省略的。注意二:extern是外部的意思。 告诉编...原创 2019-05-14 23:50:50 · 2850 阅读 · 0 评论 -
C++ static关键字
https://blog.csdn.net/guotianqing/article/details/79828100google c++ 规范, 鼓励使用static. 但是禁止在头文件中使用staic.无论是在.h 函数声明前使用static, 是还在.c文件中使用static 修饰。 都会导致在其他文件中无法使用该变量或者方法。在头文件或者.c文件中用static修饰, 使得只...原创 2019-05-15 00:50:26 · 96 阅读 · 0 评论 -
结构体重可变长成员变量-长度为零的数组的用法。
https://www.cnblogs.com/wangjian8888/p/7610049.htmlhttps://www.cnblogs.com/tangxin-blog/p/5560699.html申请一块连续的内存。长度为零的数组仅是为了偏移用的。数组的名和指针的区别?...转载 2019-05-07 19:01:22 · 151 阅读 · 0 评论 -
delete 调用 虚析构函数失败
场景:class A{ int i; A() { memset(this, 0, sizof(A))}; // 初始化 virtual ~A() {}}main(){ A* a = new A; delete a; //程序会死机。}总结:为什么会死机?A() { memset(th...原创 2019-05-16 17:07:56 · 348 阅读 · 0 评论 -
C define用法例子
#include <iostream>using namespace std;/*规则1:用宏定义表达式时,要使用完备的括号。#define RECTANGLE_AREA(a, b) ((a) * (b))规则2:规则5.2 将宏所定义的多条表达式放在大括号中。说明:更好的方法是多条语句写成do while(0)的方式。*/#define test 1...原创 2018-12-15 15:49:16 · 373 阅读 · 0 评论 -
C 拷贝构造函数
详情见: https://www.cnblogs.com/alantu2018/p/8459250.html总结:拷贝构造函数被调用的场景:1. A = B2. Rect r; Rect r1(r);3. 直接将对象传入函数4. 函数直接返回对象。浅拷贝只拷贝栈上的变量,深拷贝同时要拷贝堆上面的内存。拷贝构造函数,编译器会默认给你添加的, 所以可以直接写Rect r...原创 2019-05-09 02:14:46 · 603 阅读 · 0 评论 -
C++ sizeof
用法:sizeof + 变量名/ 类型。 返回结果是size_t(无符号整型), 以字节为单位的该类型内存大小。如果是变量名, C内部根据变量名寻找其类型,然后根据类型去计算其大小。特别注意:C语言数组名同指针的区别。 sizeof(数组名): 返回的是数组的字节长度。sizeof(指针); 返回的是4.例子:#include <...原创 2019-05-08 16:41:34 · 304 阅读 · 0 评论 -
typedef struct
#include <string>#include <iostream>#include "stdio.h"using namespace std;//结构体struct stu{ int age;};//定义一种结构体, 并设置一种别名。typedef struct car_str { int price;} *car;//定义...原创 2018-09-29 16:08:57 · 913 阅读 · 0 评论 -
转载整理-- 看完这三篇搞定GCC 编译、动态链接库、静态库
静态库、动态的库的用法:https://www.cnblogs.com/fnlingnzb-learner/p/8059251.htmlhttps://blog.csdn.net/a600423444/article/details/7206015gcc 参数:https://blog.csdn.net/gatieme/article/details/21389603动态库找不...原创 2019-03-12 15:21:48 · 311 阅读 · 0 评论 -
【C同C++区别】不同的C文件中,声明同名全局变量疑惑解决。
删除原创 2019-03-22 14:02:02 · 933 阅读 · 1 评论 -
字节对齐——转载
https://blog.csdn.net/gaoyi221119/article/details/77989522--结构体每个成员相对于结构体首地址的偏移量(offset)都是成员大小的整数倍,如有需要编译器会在成员之间加上填充字节(internal adding)--结构体的总大小为结构体最宽基本类型成员大小的整数倍,如有需要,编译器会在最末一个成员之后加上填充字节(trailin...转载 2019-03-27 19:25:19 · 145 阅读 · 0 评论 -
C C++为什么需要声明?--其实是个历史原因的累赘, 完全没必要 。
https://stackoverflow.com/questions/645778/what-are-the-advantages-and-disadvantages-of-separating-declaration-and-definitio/645855#645855Historically this was to help the compiler. You had to give ...原创 2019-03-27 20:11:14 · 746 阅读 · 0 评论 -
二维数组在内存中图解
https://blog.csdn.net/FightingITPanda/article/details/84100243https://blog.csdn.net/lizhidefengzi/article/details/53125104转载 2019-04-08 16:24:55 · 424 阅读 · 0 评论 -
C++ 作用域
现象:原因:局部作用域是跟着花括号来判断的。程序出了花括号之后, a就被释放了。总结:作用域通常和变量捆绑在一起,限定了变量可用范围,同时也规定了变量的生命周期:何时创建、何时销毁。作用域通常分为:全局作用域和局部作用域。全局作用域(全局变量)在所用函数体外部定义的变量就是全局变量,具有全局作用域。它在main函数执行前创建,mian函数结束后销毁。局部...原创 2019-04-03 12:46:57 · 985 阅读 · 0 评论 -
GCC\C语言 之坑
函数的声明与定义形参的变量名不一样会报错。32位转换成16位的int会报错。PIT_ONE:break只能退出当前for 循环。若想跳出多条循环,可以参考https://blog.csdn.net/ls1300005/article/details/50996362PIT_TWO:C语言没有bool,C++ 语言才有bool类型, 值为小写的tr...原创 2019-04-09 15:42:29 · 173 阅读 · 0 评论 -
GDB X命令详解
你可以使用examine命令(简写是x)来查看内存地址中的值。x命令的语法如下所示:x/<n/f/u> <addr>n、f、u是可选的参数。n 是一个正整数,表示显示内存的长度,也就是说从当前地址向后显示几个地址的内容。f 表示显示的格式,参见上面。如果地址所指的是字符串,那么格式可以是s,如果地十是指令地址,那么格式可以是i。x 按十六进制格...原创 2019-04-10 02:45:39 · 10304 阅读 · 0 评论 -
C语言小知识点积累
KP_1--VOID*其他类型的指针可以直接赋值给void*类型指针, 不需要强制类型转换, 但是将void*类型的指针赋值给其他类型的指针, 需要强制类型转换。KP_2:判断指针是否为空,可以通过if (ptr)表示指针有效(不为空)。 if(!ptr)表示指针无效(为空)。KP_3:对整型进行取非值, 如果为零, 取非则为1, 如果非零, 取非则为0....原创 2019-04-27 22:17:44 · 174 阅读 · 0 评论 -
为什么需要补码、原码
https://www.cnblogs.com/baiqiantao/p/7442907.htmlhttps://blog.csdn.net/zhiwen_a/article/details/81192087自己误区纠正:1. 对于正数、零: 原码、反码、补码都是一样的。2. 为什么需要反码: 计算机没有办法像人一样计算正负。 反码的计算时要保留符号位的。 有符号的数的反码/补...原创 2019-04-19 13:55:05 · 718 阅读 · 1 评论 -
C++ 指针释放内存的时候,是如何获取内存长度的。
https://blog.csdn.net/imxiangzi/article/details/50953876总结: 申请内存数据区的长度是放在分配内存地址开始之前的位置。推论一:所以在申请内存之后的指针,即使被转换了类型,仍旧可以 正确的释放内存。推论二:释放申请内存中的一部分,会抛异常。...原创 2019-04-20 13:02:20 · 1058 阅读 · 0 评论 -
枚举
#include <iostream>using namespace std;//IPTYPE是一种数据类型,他的值只能是枚举值TYPE_IPV4, TYPE_IPV6 这些宏!enum IPTYPE{ TYPE_IPV4 = 0, TYPE_IPV6};int main(){ //IPTYPE 是枚举变量的类型。 iptype是枚举变...原创 2019-01-24 16:35:14 · 136 阅读 · 0 评论