苏嵌学习笔记数据结构2019.2.13、2019.2.15

本文深入探讨了结构体和联合体的概念,包括它们的定义、初始化、内存分配及使用方式。特别关注了联合体在判断设备大小端方面的作用,以及如何通过枚举类型进行自动递增操作。

结构体和联合体

联合体是面试重点
struct student
{
char name[32];
int age;
char sex;
struct student …;
};

int main()
{
struct student s1;// 定义结构体变量
struct student s2 = {“aaa”,20,“m”};//初始化结构体变量
}
结构体变量要用printf逐个打印

虚拟内存

在这里插入图片描述
free(s3);//手动释放空间

重要问题 结构体占多少个字节
在这里插入图片描述

结构体数组
typedef struct student stu;

stu *s[10]
for ()
{
s[i] = (stu *)malloc(sizeof(stu));//申请空间

}
定义了指针数组首先要为其申请空间
否则只是定义的一个野指针,里面存储的是垃圾值。

联合体

特点:所有成员共享同一段内存空间
长度:最长成员的长度

即公用一段内存

作用:用于判断设备的大小端

高字节存放在高地址 表示小端
高字节存放在低地址 表示大端

union test
{
short value;
char ch[2];
}

char[0] 一定在低地址
char[1]一定在高地址

union test T

T.value = 0x0102 0000000100000010
if(T.ch[0] ==1 && T.ch[1]==2)
{
printf(高端字节序)
}
else if(T.ch[1] ==1 && T.ch[0]==2)
{
printf(低端字节序)
}

转换大小端
int main()
{
int a = 1;
printf("%d\n",((a&0x000000ff<<24) | ((a & 0x0000ff00)<< 8) | ((a&0x00ff0000)>>8 | ((a&0xff000000>>24))
return 0;
}

①与运算取值
②移位转换
③或运算求值

枚举类型
enum 内部元素自动递增作用

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值