C基础
one goto one
不苟且于现状,不停留于浅薄
展开
-
线程安全的unordered_map
使用 C++11 标准库中的 std::shared_mutex 实现读写锁来保护 std::unordered_map,允许多个线程同时读取 unordered_map,但只允许一个线程写入 unordered_map,可以提高并发性能。std::unordered_map 是 C++ 标准库中的哈希表实现的关联数组,它本身不是线程安全的,多个线程同时访问和修改同一个 unordered_map 可能会导致数据竞争和未定义行为。原创 2023-07-03 21:09:30 · 2422 阅读 · 0 评论 -
关键字static与extern
一、static 关键字作用static 最主要功能是隐藏(修饰变量和函数),其次因为 static 变量存放在静态存储区,具备持久性和默认值为 0隐藏作用:可以在不同的文件中定义同名变量和同名函数。储存方式:仅对于变量来说,保持变量持久,程序退出才被销毁,静态数据区的变量会在程序刚刚运行时就完成初始化,也是唯一一次初始化;储存在静态数据区,静态存储区只有两种变量(全局变量和 static 静态变量)。默认初始化为 0,和全局变量一样的属性二、extern 关键字作用声明外部变量函原创 2021-10-05 18:33:31 · 192 阅读 · 0 评论 -
区分声明与定义
一、声明告诉编译器,这个名字已经匹配到一块内存上了,下面的代码用到变量或对象是在别的地方定义的例如:extern int i;告诉编译器,我这个名字我先预定了,别的地方再也不能用它来作为变量名或对象名例如:void fun(int i);二、定义定义就是(编译器)创建一个对象,为这个对象分配一块内存并给它取上一个名字,这个名字就是我们经常所说的变量名或对象名注意变量定义指定地址后或系统自动分配地址后,变量的地址就不能再改变了三、区别变量可以多次声明但是只能定义一次定义创建了对象并为原创 2021-10-05 17:59:46 · 87 阅读 · 0 评论 -
按位与、按位或、移位、取反
&: 有0为0,其余为1;|: 有1为1,其余为0;按位与: 3&5 即 0000 0011& 0000 0101 = 0000 0001,因此 3&5 的值得1按位或: 3|5即 0000 0011| 0000 0101 = 0000 0111,因此,3|5的值得7移位: 左移:<< 右移:>>左移规则:按二进制形式把所有的数字向左移动对应的位数,高位移出(舍弃),低位的空位补零右移规则:按二进制形式把所有的数字向右移动对应位原创 2021-07-25 11:27:09 · 900 阅读 · 0 评论 -
计算结构体大小
计算法则结构体成员的偏移量必须是自己大小的整数倍结构体大小必须是所有成员大小的整数倍结构体成员为数组或则结构体时无需考虑法则1和2对齐方式意义:确实很浪费空间,可是按照计算机的访问规则,对齐方式提升了效率demodemo1char a 1个字节char b 1个字节int c 4个字节,偏移量为2不满足法则一,偏移量加2,S2=1+1+2+4=8#include <stdio.h>struct S1{ char a; //1原创 2021-07-08 13:43:04 · 105 阅读 · 0 评论 -
LinuxC64位操作系统下数据类型大小及字、字节、双字
字长(字)字长:同一时间处理二进制位数字长通常为16、32、64位,与计算机位数相同1字 = 2字节 = 16位字节1字节 = 8位二进制1字节分配一个存储地址双字1双字 = 2字 = 4字节 = 32位2双字 = 4字 = 8字节 = 64位...原创 2021-07-08 10:29:43 · 2573 阅读 · 2 评论