C语言
文章平均质量分 72
C语言笔记
迪利克雷的火车
喵喵
展开
-
联合体和枚举类型
像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。但是编译器只为最大的成员分配足够的内存空间。联合体的特点是。。给联合体其中一个成员赋值,其他成员的值也跟着变化。如图所示,当打印联合体的地址以及每个成员的地址时,他们的地址都是一样的如图是结构体与联合体内存分配的区别。原创 2023-09-23 14:40:42 · 59 阅读 · 1 评论 -
结构体实现位段
位段的声明与结构体类似,有两个不同1.位段的成员必须是int,unsigned int ,signed int,在C99中位段成员的类型也可以是选择其他类型。2.位段成员名后边要有一个冒号和一个数字。原创 2023-09-23 11:51:54 · 49 阅读 · 1 评论 -
数据在内存中的存储(基础)
比如保存1.01的时候,只保存01,等到读取的时候,再把第一位的1加上去。在计算机系统中,数值一律用补码来表示和存储,原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。在计算机系统中,数值一律用补码来表示和存储,原因在于,使用补码,可以将符号位和数值域统一处理,同时,加法和减法也可以统一处理(CPU只有加法器)此外,补码与原码相互转换,其运算过程是相同的,不需要额外的硬件电路。原创 2023-09-15 00:29:54 · 188 阅读 · 0 评论 -
怎样在内存中为结构体分配空间?
如图,当结构体成员一致但是顺序不同时,所计算的出来的结构体大小不一样因此我们发现结构体在在内存中存储时并不是简单地将其成员所占空间相加,而成员的类型,放置顺序都会影响为结构体分配内存空间。若内存中从位置为0开始存放结构体,则c1放在0处 ,而放c2时,由于c2是char类型,大小为1,与默认对齐数8相比较小,故c2的对齐数就是1,VS中默认的值为8Linux中没有默认对齐数,对齐数就是成员白身的大小。原创 2023-09-16 00:34:22 · 528 阅读 · 1 评论 -
字符串函数的模拟实现
source所指字符串内容拷贝到destination所指空间中,包含'\0',(并且是遇到\0才停下来)所以这就要求原字符串中必须有\0,并且目标空间要足够大,能放得下拷贝进来的数据,不然会造成越界访问,并且要求目标空间可修改,size_t strlen(const char * str) 求字符串长度的函数,统计\0之前字符个数,结束标志是\0,返回值是size_t 类型。目标空间中得有\0,(从哪里开始),源头字符串中得有\0(追加到什么时候结束)方法2,优化了指针的有效性,避免了\0的单独考虑。原创 2023-09-05 21:54:22 · 59 阅读 · 2 评论