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

学做网站初入门教程温岭网络推广

学做网站初入门教程,温岭网络推广,动态网站通讯录怎么做,云梦县建设安全网站1.联合体类型 1.1:联合体类型变量的创建 与结构体类型一样,联合体类型 (关键字:union) 也是由⼀个或者多个成员变量构成,这些成员变量既可以是不同的类型,也可以是相同的类型。但是编译器只为最⼤的成员变量分配⾜够的内存空间。联合体的特…

1.联合体类型

1.1:联合体类型变量的创建

与结构体类型一样,联合体类型 (关键字:union) 也是由⼀个或者多个成员变量构成,这些成员变量既可以是不同的类型,也可以是相同的类型。但是编译器只为最⼤的成员变量分配⾜够的内存空间。联合体的特点是所有成员变量共⽤同⼀块内存空间。所以联合体也叫共用体。而结构体中每个成员变量都有自己独立的空间。

#include<stdio.h>
union Un 
{char c;//1个字节int i;//4个字节
};int main()
{union Un u;printf("%zd\n", sizeof(union Un));//4  为char类型的c分配4个字节的空间printf("%p\n", &u);//008FFA9Cprintf("%p\n", &(u.c));//008FFA9Cprintf("%p\n", &(u.i));//008FFA9C//联合体类型变量u与成员c、成员i的地址相同,由此可见,联合体中的成员是共用同一块内存空间的return 0;
}

在这里插入图片描述

1.2:给联合体中一个成员变量赋值时,其他成员变量的值也会发生变化。

在这里插入图片描述

1.3:相同成员的结构体类型和联合体类型的对比

在这里插入图片描述

1.4:联合体类型变量的大小

在这里插入图片描述

#include <stdio.h>
union Un1
{//当成员变量是数组时,对齐数 = 数组元素的大小与编译器默认的对齐数中的较小值char c[5];//数组元素占1个字节,编译器默认的对齐数是8,则c的对齐数是1int i;//i占4个字节,编译器默认的对齐数是8,则i的对齐数是4//所有成员中,最大的对齐数是4,则该联合体类型的大小必须是4的倍数
};
union Un2
{//当成员变量是数组时,对齐数 =数组元素的大小与编译器默认的对齐数中的较小值short c[7];//数组元素占2个字节,编译器默认的对齐数是8,则c的对齐数是2int i;//i占4个字节,编译器默认的对齐数是8,则i的对齐数是4//所有成员中,最大的对齐数是4,则该联合体类型的大小必须是4的倍数
};
int main()
{printf("%d\n", sizeof(union Un1));//8printf("%d\n", sizeof(union Un2));//16return 0;
}

1.5:结构体类型与联合体类型的对比

联合体类型比结构体类型更节省空间,但它也有缺陷: 由于所有成员变量共用一块内存空间,当每个成员变量需要单独使用时,应该使用结构体类型,不能使用联合体类型。
在这里插入图片描述

1.6:利用联合体类型,写一个程序,判断当前机器是大端字节序存储还是小端字节序存储。

int check_sys()
{union   //匿名联合体类型,易知该类型占4个字节{int i;char c;}un;un.i = 1;//1的补码00000000000000000000000000000001//1的补码的16进制表示形式:0x00000001return un.c;//返回1是⼩端,返回0是⼤端
}

在这里插入图片描述

2.枚举类型

2.1:枚举类型变量的创建

枚举的关键字enum
在这里插入图片描述

enum Sex//性别
{//下面是枚举类型变量的可能取值,这些值都是常量。常量的值一旦确定后就无法修改了//如果不给这些常量赋初始值的话,默认是从0开始,向下每个常量的取值逐渐加1MALE,//男                            MALE的默认值为0,FEMALE,//女                          FEMALE的默认值为1,SECRET//保密  最后一个取值不加逗号     SECRET的默认值为2//MALE、FEMALE、SECRET的类型是enum Sex
};int main()
{enum Sex a = MALE;//根据枚举类型enum Sex创建变量a,a的取值是男printf("%d\n", MALE);//0printf("%d\n", FEMALE);//1printf("%d\n", SECRET);//2//MALE=4;   error,MALE是常量,它的值是0,不能被修改 return 0;
}
enum Sex//性别
{MALE=2, //将常量MALE的初始值赋为2                         FEMALE,//则常量FEMALE的值就是3 (2+1)                       SECRET//则常量SECRET的值就是4 (3+1)   
};int main()
{printf("%d\n", MALE);//2printf("%d\n", FEMALE);//3printf("%d\n", SECRET);//4return 0;
}
enum Sex//性别
{MALE=3, //将常量MALE的初始值赋为3                       FEMALE=4,//将常量FEMALE的初始值赋为4                      SECRET//则常量SECRET的值就是5 (4+1)   
};int main()
{printf("%d\n", MALE);//3printf("%d\n", FEMALE);//4printf("%d\n", SECRET);//5return 0;
}
enum Sex//性别
{MALE=3, //将常量MALE的初始值赋为3                      FEMALE=5,//将常量FEMALE的初始值赋为5                     SECRET=7//将常量SECRET的初始值赋为7
};int main()
{printf("%d\n", MALE);//3printf("%d\n", FEMALE);//5printf("%d\n", SECRET);//7return 0;
}

2.2:枚举类型需要注意的地方

可以将整数赋值给枚举类型的变量吗?在C语⾔中是可以的,但是在C++是不⾏的,因为C++的类型检查⽐较严格。

enum Sex//性别
{MALE,FEMALE,SECRET
};int main()
{enum Sex a= 0;//因为MALE的值为0,将MALE赋值为枚举类型的变量a//上面这句代码在C语言中不会报错,但在C++中会报错。因为C++的类型检查比较严格,C++中认为赋值符号右边的0是int类型,而a是enum Sex类型,所以不能把0赋值给a//可以把上面这行代码替换成enum Sex a= MALE;这样无论是C语言还是C++中都不会报错return 0;
}
http://www.dtcms.com/wzjs/531393.html

相关文章:

  • 合肥金融网站开发沈阳seo搜索引擎
  • 有什么做家常菜的网站国家高新技术企业查询
  • 乔拓云智能建站系统官网百度手机助手app下载官网
  • 快速网站排名提升工具百度指数查询官网
  • 响应式网站欣赏企业推广是做什么的
  • 一个网站的制作特点seo推广公司排名
  • 网站怎么样做不违规怎么样关键词优化
  • 建设银行官方网站手机版下载安装电脑培训班有哪些科目
  • 免费自助建站网站建设免费信息发布竞价排名的服务模式是
  • 做网站都需要会什么软件seo面试常见问题及答案
  • 做网站怎么排版网站模版
  • 建设银行陕西分行网站seo培训机构
  • 封面免费制作网站seo问答
  • ac68u做网站网站seo优化是什么
  • 学校网站cms推广软文范例大全500
  • 面料出口做哪个网站好游戏推广赚佣金的平台
  • 怎样做网站变手机软件中国十大搜索引擎排名
  • 无上升级系统图片优化软件
  • 广州企业网站找哪里百度网站大全旧版
  • 北京各大网站推广服务公司网页制作步骤
  • 昆山设计网站的公司全部视频支持代表手机浏览器
  • 自己的电脑做网站会收录吗网站seo的内容是什么
  • 网站开发的试题营销型网站的类型有哪些
  • 石家庄哪里做微网站百度广告推广怎么做
  • 做新闻网站怎么赚钱互联网营销的方法
  • 建设银行网站看不到e商免费检测网站seo
  • 做网站如何赢利的如何在网上推广自己的公司
  • asp保险网站源码seo网络营销推广
  • 网站开发视频播放网站cps推广是什么意思
  • 花溪区生态文明建设局网站关键词排名优化软件