随笔分类 - C/C++
摘要:C_struct中的长度可变数组(Flexible array member) Flexible array member is a feature introduced in the C99 standard of the C programming language (in particular
阅读全文
摘要:C struct中的位域 bitfield 结构体的成员可以限制其位域,每个成员可以使用用比字节还小的取值范围,下面的结构体s1中,四个成员每个成员都是2bit的值(0~3),整个结构体占据的空间依然是4个字节,但是第一个字节中表示了四个成员,后续三个字节没有用到。 位域限制对于一些非字节对齐的变量
阅读全文
摘要:预分配内存fifo实现可变长度字节序列存储 github链接 "https://github.com/gexin1023/utils/tree/master/fifo" fifo即先进先出队列,可以用链表来实现,在链表头部插入数据,尾部读数据,每次插入新的数据都动态分配一段内存用于数据存储,适用于变
阅读全文
摘要:c中的static变量 static变量分配在内存中的数据段,函数内部声明的static变量在函数调用结束时,依然保持在内存中, 静态变量只能被const类型的变量初始化,例如下面的函数会出错 include int initializer(void) { return 50; } int main
阅读全文
摘要:在32位系统中,int类型的最大值是0x7fffffff(即除了最高的1Bit其他31位都为1),而最小值是0x80000000(除了最高1bit,其他31位都为0)。 显然,对于最小值求负数是不存在的,为什么会使最小值本身呢? 这是由于在计算负运算时,是针对int类型数据进行“取反加一”操作。这样
阅读全文
摘要:pragma pack(n)对齐格式 \ pragma pack(n) 是预处理器用来指定对齐格式的指令,表示n对齐。当元素字节小于n时,要扩展到n;若元素字节大于n则占用其实际大小。 对于tmp结构体,32位系统中默认情况下按照4字节对齐,该结构体占用12个字节,上面函数的输出如下: 当在结构体定
阅读全文