随笔分类 - 01_C/C++ / C
C的相关知识点
摘要:一、关键词 类/结构体默认生成。 拷贝/移动 + 构造/赋值 = 组合不同方式有4种,除默认、析构,共计6种。 在使用时:拷贝/移动 + 赋值的,都是定义和赋值分开;拷贝/移动 + 构造的,都是定义和赋值一起。 二:知识点 默认构造函数 Student():age(0){}; 拷贝构造函数 Stud
阅读全文
摘要:一、关键词 简单数据类型、结构体在C和C++中的不同、C风格强制转换 二:知识点 简单数据类型如:int、double等,是不存在构造函数和复制构造函数等,是语言内建的类型。 结构体在C和C++这中有区别,c中给的结构体,是数据存储的一种形式,并不会有构造函数,数据简单数据类型结构体,而C++中的结
阅读全文
摘要:一、关键词 指针,二重指针 二:知识点 1. 指针的本身地址、指针所指向地址、指针所指向地址内容 本身地址:指针也是一个类型,通常是在64位系统上是8字节,32位是4字节。既然是类型对象就需要存储地址,因此本身地址指的是用于存储指针这个变量值的地址。 指针指向地址:指针是个变量,这个变量存储的值就是
阅读全文
摘要:一、关键词 **|(或)、&(与)、~(非)和^(异或)** 符号 描述 运算规则 & 与 两个位都为1时,结果才为1 或 或 两个位都为0时,结果才为0 ^ 异或 两个位相同为0,相异为1 ~ 取反 0变1,1变0 << 左移 各二进位全部左移若干位,高位丢弃,低位补0 >> 右移 各二进位全部右
阅读全文
摘要:带有成员指针的结构体的拷贝 1.问题 使用结构体时,在析构时发生了**重复释放指针** 的错误。 2.原因 定义了QList<结构体>,使用append添加结构体对象并未此结构体中的指针分配了空间,append会执行值拷贝,此时会创建新的副本添加进QList中,值得注意的是:append执行拷贝时并
阅读全文
摘要:内存++注意事项 内存中的++的单位是不同的,比如char* 和int* 的++,前者是+1字节,后者是+4字节。 结构体变量的++也是相同的,不特殊处理的情况下是以变量结构体的大小为单位++。 若想固定每次++都是1怎么办? 可以把结构体强转化为char*这种一个字节为单位的类型指针, e.g:
阅读全文
摘要:结构体中 char * 位置对于整体copy的影响 char* 成员在结构体尾部 在尾部,char* 成员在malloc后可以直接使用memcpy 从结构体第一个字节进行拷贝,这是可以的。 char* 成员在结构体非尾部 在中部,char* 成员在malloc后可以直接使用memcpy,从结构体第一
阅读全文
摘要:一、关键词 结构体指针强转为整型类,使用时在把整型强转为结构体指针 二、知识点 注意:1、这种的转化并不是用指针指向指针,而是目标指针的地址被作为一个值被保存在整型中,而整型中的值就是目标指针的地址。 2、需要实在64位机器还是32为机器,在32位用int就可以,而64位需要long进行转化以及存储
阅读全文
摘要:**一. 知识点:** 1、C的 rand()函数生成指定范围的随机数 2、Rand_Max 3、srand():指定rand函数的seed(种子),若seed不变则rand产生的值也不会变,在没有调用srand且使用rand函数时会隐式调用 srand(1); **二. 详解 :** 1、C的 r
阅读全文