当前位置: 首页 > news >正文

网站框架文案360移动建站

网站框架文案,360移动建站,大连今年大项目建设,潍坊高密网站建设C语言之联合和枚举 文章目录 C语言之联合和枚举1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 结构体和联合体对比1.4 联合体大小的计算1.5 联合体小练习 2. 枚举2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 1. 联合体 1.1 联合体的声明 像结构体⼀样#xff…C语言之联合和枚举 文章目录 C语言之联合和枚举1. 联合体1.1 联合体的声明1.2 联合体的特点1.3 结构体和联合体对比1.4 联合体大小的计算1.5 联合体小练习 2. 枚举2.1 枚举类型的声明2.2 枚举类型的优点2.3 枚举类型的使用 1. 联合体 1.1 联合体的声明 像结构体⼀样联合体也是由⼀个或者多个成员构成这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫共⽤体。 给联合体其中⼀个成员赋值其他成员的值也跟着变化 1.2 联合体的特点 代码一 #include stdio.hunion U {char a;int b; }; int main() {union U uu { 0 };printf(%zd\n, sizeof(uu));return 0; }代码运行结果: 4 结论:联合的成员是公用一块空间的联合体变量的大小至少是最大成员的大小至少确保能存下最大的那个成员 代码二 #include stdio.hunion U {char a;int b; }; int main() {union U uu { 0 };printf(%p\n, (uu.a));printf(%p\n, (uu.b));printf(%p\n, uu);return 0; }代码运行结果: 012FFD90 012FFD90 012FFD90 可以看到无论是联合体的地址还是联合体成员的地址都是一样的说明他们共用同一块空间 代码三 #include stdio.hunion U {char a;int b; }; int main() {union U uu { 0 };uu.b 0x11223344;uu.a 0x55;printf(%#x\n, uu.b);return 0; }%#x打印的是带0x的十六进制数0x11223344是一个十六进制数 代码运行结果: 0x11223355 由于是小端字节序存储优先存低字节的也就是44然后通过char修改了第一个字节的内容将44修改成了55所以打印结果为0x11223355 1.3 结构体和联合体对比 union U {char a;int b; }; struct S {char a;int b; };相对于结构体联合体较节省空间 1.4 联合体大小的计算 • 联合体大小至少是联合体中最大成员的大小• 当最大成员的大小不是最大对齐数的整数倍时就要对齐到最大对齐数的整数倍和结构体一样联合体也是有对齐的 #include stdio.hunion U1 {char a[7];int b; }; union U2 {short a[7];int b; }; int main() {union U1 u { 0 };union U2 uu { 0 };printf(%zd\n, sizeof(u));printf(%zd\n, sizeof(uu));return 0; }代码运行结果如下: 8 16 联合体U1中有两个成员char a[7] int b 其中最大成员为char a[7]为7个字节char为1字节默认对齐数为8取较小值1int为4字节默认对齐数为8取较小值4所以两个成员中的最大对齐数为4最大成员的大小为7不是最大对齐数4的倍数所以将对齐至8字节对齐之后才是联合体的大小 同理联合体U2也有两个成员最大成员的大小为14字节不是最大对齐数4的倍数所以将对齐至16字节对齐之后才是联合体的大小 1.5 联合体小练习 要求写一个代码判断当前机器的字节序 代码一 #include stdio.hint check_sys() {int n 1;return *(char*)n; } int main() {int ret check_sys();if (ret 1)printf(小端\n);elseprintf(大端\n);return 0; }小端字节序将低字节内容存到低地址高字节内容存到高地址 大端字节序将高字节内容存到低地址低字节内容存到高地址 内存使用优先使用低地址 1的十六进制为00 00 00 01 小端字节序为 01 00 00 00 大端字节序为 00 00 00 01 取出1的地址将其从int*类型的指针强制类型转化为char*类型的地址这样解引用的时候就会访问低地址处的内容如果解引用得到1则是小端得到0则为大端 代码二 使用联合体的方式 #include stdio.hint check_sys() {union{char a;int b;}un;un.b 1;return un.a; } int main() {int ret check_sys();if (ret 1)printf(小端\n);elseprintf(大端\n);return 0; }通过联合体公用同一块空间的方式如果第一个字节中存的是1则是小端如果存的是0则是大端 2. 枚举 2.1 枚举类型的声明 枚举顾名思义就是一一列举 enum Day//星期 {Mon,Tues,Wed,Thur,Fri,Sat,Sun };枚举类型enum Day 枚举常量MonThus… //枚举常量使用逗号隔开最后一个常量不需要 枚举常量是有值的第一个常量的值默认从0开始依次递增1也可以在声明的时候为枚举常量赋值 enum Color {RED 4,YELLOW 8,BLUE 12 };2.2 枚举类型的优点 有#define关键字为什么还要使用枚举呢 增加代码的可读性和可维护性和#define定义的标识符⽐较枚举有类型检查更加严谨。便于调试预处理阶段会删除 #define 定义的符号使⽤⽅便⼀次可以定义多个常量枚举常量是遵循作⽤域规则的枚举声明在函数内只能在函数内使⽤ 2.3 枚举类型的使用 #include stdio.henum Color {RED 4,YELLOW 8,BLUE 12 };int main() {enum Color clr BLUE;//使用枚举常量为变量赋值return 0; }#include stdio.henum Color {RED 4,YELLOW 8,BLUE 12 };int main() {enum Color clr 12;//使用整数为变量赋值12 BLUEreturn 0; }在C语言中对其规定不是很严格在C中C的类型检查比较严格这是个语法错误无法使用整型对枚举变量赋值
http://www.huolong8.cn/news/303639/

相关文章:

  • 玉田住房与城乡建设局网站智博教育的网络营销是什么
  • 手机网站自助建阿里云买啦域名怎么建设网站
  • 南昌本地生活网站有哪些罗湖区seo排名
  • 北京亦庄网站建设公司wordpress搬家图片不显示
  • 网站空间大小免费发布项目的网站
  • 东莞专业拍摄做网站照片做网站样品图片怎么拍照
  • 网站后台登陆破解网站开发tahmwlkj
  • 站长之家权重查询镇江教育云平台网站建设
  • wordpress动漫整站买个网站域名多少钱一年
  • 响应式网站 向下兼容如何建设自己的php网站
  • 天津网站建设 熊掌号万城建设网站
  • 如何做全网影视网站收录网站有哪些
  • 美工常用找素材网站淘客推广网站怎么做的
  • 网站搜索要怎么做优化设计六年级上册答案
  • 建立个人网站流程王也道长头像
  • 做百度网站排名软件网站建设的价位
  • 舆情服务网站做家教在哪个网站找
  • 网站建设免费按词收费微网站建设及微信推广方案ppt模板
  • 住房城乡建设证书查询现在网站如何做优化
  • 珠海电商网站制作网站开发的步骤
  • 广东建设继续教育网站茂民网站建设
  • 做外贸需要关注的网站有什么网站建设招标无锡
  • 外贸网站建设企业免费软件下载网站哪个好
  • 广安网站建设公司产品网站系统
  • 没有域名的时候建网站深圳企业网站建设推荐公司
  • 做物流的网站有哪些中文 域名的网站
  • 视频网站 怎么做网站建站建设哪家好
  • 做一件代发的网站那些网站hr可以做兼职
  • 创立网站国内wordpress主题网站
  • 网站开发前端和后端工作做十来个网站优化