您现在的位置是:主页 > news > 美食网站怎么做/seo综合查询网站
美食网站怎么做/seo综合查询网站
admin2025/5/9 19:35:29【news】
简介美食网站怎么做,seo综合查询网站,软件外包专业就业方向,网站开发去哪里培训复合结构类型 结构体: 结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成。 设计: struct 结构体名 {类型1 成员名1;类型2 成员名2;... }; 定义结构变量:struct 结构…
复合结构类型
结构体:
结构是由程序员自己设计的一种数据类型,用于描述一个事物的各项数据,由若干个不同的基础类型组成。
设计:
struct 结构体名
{类型1 成员名1;类型2 成员名2;...
};
定义结构变量:struct 结构体名 结构变量名;注意:定义结构体变量时,struct不能省略
定义结构变量初始化:struct 结构名 结构变量名 = {v1,v2,v3};注意:要根据结构体设计的顺序初始化struct 结构名 结构变量名 = {.成员名2=v2,.成员名3=v3};只初始化某些成员注意:同类型的结构变量可以直接赋值,变量名1=变量名2;
访问结构成员:结构体名.成员名
结构变量做形参时:
由于结构变量的字节数比较大,值传递的效率比较低,因此都是传递结构体的地址,当使用的是结构体指针时,那么使用->来访问成员。如果不需要修改结构变量的值,可以使用const来保护。
结构体->成员名;
typedef重定义结构类型:
typedef struct 结构类型名 结构类型名;
之后就可以不用sturct关键字了
typedef struct 结构类型名
{
类型 成员名;
…;
}结构类型名;
注意:一般使用堆内存存放结构体变量。
计算结构体字节数
结构体的成员的顺序会影响它的总字节数,如果在设计结构体时能够合理地安排成员的顺序可以大大节省内存。
内存对齐:
假定第一个成员从零地址开始算,储存每个成员地址编号必须能被它的类型的字节数整除
内存补齐:
结构体的总字节数,必须是它最大成员的字节数的整数倍,如果不是整数倍,则在末尾填充空字节。
在Linux系统下计算结构体的对齐和补齐时,如果成员的字节数大于4个字节,则以4个字节计算。Windows下是按实际情况计算的
#pragma pack(n) 设置对齐、补齐的最大字节数 n<=4
联合:union
联合与结构的使用方法基本一致,与结构的区别就是所有的成员共用一块内存,一个成员的值发生变化,其他所有成员的值也会随之改变。
联合就是使用少量的内存对应多个标志符,来达到节约内存的目的,现在已经基本不使用了。
联合常考的笔试题:
union Date
{char ch[10];int num;
};
注意:计算联合体时要考虑内存补齐
如何判断系统是大端还是小端?
如果十六进制整数0x01020304 储存在以0x0A为起始地址的4字节内存中
高位数据存在高位地址——小端 (0A:04 0B:03 0C:02 0D:01)
高位数据存在低位地址——大端 (0A:01 0B:02 0C:03 0D:04)
#include<stdio.h>union Date
{char ch[10];int num;
};int main(int argc,const char* argv[])
{union Date date;date.num = 0x01020314;printf("%hhd\n",date.ch[0]);//union Date d = {};//d.num = 123;//printf("%hhd %d",d.ch,d.num);
}
个人计算机系统一般都是小端系统,而UNIX服务器和网络设备都是大端系统,网络字节序也是大端模式的数据
序列化和反序列化(sprintf,xml,json)
枚举:enum
枚举就是一种数据类型把可能出现的值全部罗列出来,取一个有意义的名字,除此之外,该类型的变量再出现别的数值就是非法的(愿望)。
枚举就可以看作是数值受限的int类型,但编译器为了效率,并不会检查,所有的C语言中的枚举都可以当做正常的int类型。
#include<stdio.h>enum Direction {UP=183,DOWN=184,RIGHT=185,LEFT=186};int main(int argc,const char* argv[])
{enum Direction k = UP; printf("%d",k);
}
如果不给成员值,枚举的值默认从0开始,逐渐+1,如果设置了值,后面没设置的会在它的基础上+1。
为什么要使用枚举:
为没有意义的值取一个有意义的名字,提高代码的可读性。