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

英文网站如何建设站长工具忘忧草社区

英文网站如何建设,站长工具忘忧草社区,装饰公司哪家口碑好,网站都是用什么语言写的本章概述 联合体类型的声明联合体的特点联合体的大小的计算枚举类型的声明枚举类型的优点枚举类型的使用枚举类型的大小彩蛋时刻!!! 联合体类型的声明 概述:联合体的关键字为 union。它的结构和结构体是一样的。进行展示&#xf…

本章概述

  • 联合体类型的声明
  • 联合体的特点
  • 联合体的大小的计算
  • 枚举类型的声明
  • 枚举类型的优点
  • 枚举类型的使用
  • 枚举类型的大小
  • 彩蛋时刻!!!

联合体类型的声明

  • 概述:联合体的关键字为 union它的结构和结构体是一样的。进行展示:
union tag
{mem_list;
}var_list;

联合体的结构,成员列表,访问方式和定义变量与结构体是一样的,在这里不再过多的陈述。但是,它俩唯一的区别就是——编译器只为联合体中最大的成员变量分配足够的空间。 也就是说,一个联合体的大小至少是最大成员变量的大小,其它所有的较小成员就和最大成员共用一个内存空间。事实如此吗?进行代码展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
//联合体的声明
union Un
{char c;int i;
};
int main()
{union Un s = {0};printf("%p\n",&s);printf("%p\n", &(s.c));printf("%p\n", &(s.i));return 0;
}

结果运行图:在这里插入图片描述
我们发现,联合体变量的起始地址和内部成员的地址是一样的,看来就是共用一个空间。如图所示:在这里插入图片描述
这就和结构体有很大的区别。结构体的每个成员都有独立空间,但是联合体的所有成员共用一个空间因此联合体也叫共用体。进行代码展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
//联合体的声明
union Un
{char c;int i;
};
int main()
{printf("%zd\n",sizeof(union Un));return 0;
}

结果运行图:在这里插入图片描述
char c占有1个字节,int i 占有4个字节。咱们在上面讲过了,编译器只为联合体中最大的成员分配足够的空间,所以这个结构体的大小就是4个字节。

联合体的特点

前面咱们讲过了,联合体中所有的成员共用一个空间。如图所示:在这里插入图片描述
讲到这里,可能就有疑问了?竟然所有的成员共用一个空间,那么改其中一个成员的数据,就会导致其它成员的数据改变,事实是这样的吗?我们就以上面的代码进行调试一下:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
//联合体的声明
union Un
{char c;int i;
};
int main()
{union Un s = {0};s.i = 0x11223344;s.c = 0;return 0;
}

内存调试图:在这里插入图片描述
事实就是如此——互相影响。所以,当我们要用联合体时,我们只能用其中一个成员(影响到其它成员时),也可以使用不止一个(不影响其它成员时。讲到这里,可能有人就抱怨了,联合体竟然这么鸡肋,为什么还要用它呢?这就是你的格局没打开了。联合体的特点就是所有的成员共用一个空间,这不就省内存空间了吗。我们接下来举个生活中的例子,进行代码实现:

比如:我们要搞一个促销活动,促销的产品有杯子,书本和衬衫。
它们共同有的特征是:库存量和价格。
它们各自的特征: 杯子                书本                衬衫设计                 作者                设计书名                大小页数                颜色

当我们想把这些商品进行展示,就要把这些特征全部包含进去。我们下意识就会想到结构体,写的代码如下:

struct git_list
{int kucun;double price;//杯子char sheji[20];//书本char zuozhe[30];char shuming[40];int yeshu;//衬衫int size;char color[10];
};

但是当我们用这个结构体创建变量的时候,比如:struct git_list book 或者 struct git_list mark。有些特征我们是使用不到的。但是,内存也要为这些没用到的特征创建空间,这就很浪费空间了。这个时候用联合体就会节省很大的空间了,进行代码展示:

struct git_list
{//共有的特征int kucun;double price;union s0{//杯子struct s1{char sheji[20];}mark;//书本struct s2{char zuozhe[30];char shuming[40];int yeshu;}book;//衬衫struct s3{int size;char color[10];}shirt;}thing;
};

我们把共有的特征放在结构体的开头,把各自的特征(各自特征组成的小结构体)放在联合体中,这样,我们想调用那个商品的特征,就直接从联合体里面调用了(虽然联合体里面写了很多的特征,但是它们都占一个空间),相比于全部用结构体省了很多的空间

  • 练习:我们用联合体再来重温一下判断大小端字节序,进行代码展示:码
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
union un
{char c;int i;
}s1;
int main()
{s1.i = 1;if (s1.c == 1)printf("小端字节");elseprintf("大端字节序");return 0;
}

结果运行图:在这里插入图片描述

联合体的大小的计算

前面,咱们讲过——编译器只会给联合体中最大的成员分配足够的空间,也就是联合体的大小至少是最大成员的大小。那么,是不是就可以理解为:联合体的大小就是最大成员的大小。NO!NON!,不可以。进行代码展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
union un
{char arr[5];int i;
};
int main()
{printf("%zd\n",sizeof(union un));return 0;
}

char arr[5]占有5个字节,int i占有4个字节,按照咱们的猜测,答案是5吗?
结果运行图:在这里插入图片描述
看来我们的猜测是错误的。因为联合体的大小还有如下的规则(这才是真正的大小)

【1】:联合体的大小至少是最大成员的大小
【2】:当最大成员的大小不是对齐数的整数倍时,就要对齐到对齐数的整数倍

char arr[5] 的对齐数是 1,int i 的对齐数4,最大对齐数是 4.而最大成员 char arr[5]是5个字节,不是最大对齐数(4)的整数倍,就要对齐到8,才是最大对齐数的整数倍。

枚举类型的声明

  • 概述枚举:顾名思义就是逐个列举的意思(中文解释)把可能的值给一一列举出来。
比如我们现实生活中:
1.一周有7天,可以一一列举出来。
2.性别:男, 女 ,保密。
3.颜色的三原色,红 ,蓝 ,绿

枚举的关键字是enum ,它的结构与结构体类似,进行代码展示:。

enum tag
{常量1,         //注意:枚举里面的每一个成员后面都是' ,'结尾。常量2,                 最后一个成员的结尾什么也没有......常量n
}var_list;

枚举的结构和结构体类似,但是它的成员和结构体的不同。我们知道结构体的成员都是变量,但是枚举的成员都是常量而且这个常量还不像数字那样的常量,我们先来一代码进行展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
enum sex
{male,female,secret
};
int main()
{printf("%d\n", male);printf("%d\n", female);printf("%d\n", secret);return 0;
}

结果运行图:在这里插入图片描述
大家可以看出来,枚举里面都是常量。不知道大家有没有感觉到,枚举的这个成员常量和重命名很像,进行代码展示:

#define male 0 ; // 把0重新命名为male, 也就是说:male==0

枚举的常量成员就可以类比重命名

  • 注意事项
    • 1.创建枚举时,编译器就已经为里面的常量成员分配好值了,编译器会默认给第一个成员分配0,后面的成员分配一次增1
    • 2.枚举的成员是常量,是不可以更改的。进行代码展示:
#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
enum sex
{male,female,secret
};
int main()
{male = 2;return 0;
}

结果运行图:在这里插入图片描述
枚举的成员时常量,所以是不可以修改的。但是,我们可以在创建枚举时进行初值的修改,进行代码展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
enum sex
{male=6,female,secret
};
int main()
{printf("%d\n", male);printf("%d\n", female);printf("%d\n", secret);return 0;
}

结果运行图:在这里插入图片描述
我们可以在创建枚举时,进行修改初值。后面成员也是一次增1。

枚举类型的优点

前面,咱们讲过了,枚举定义常量和重命名是一样的,那么为什么还要用枚举呢?这就要讲到枚举的优点了。

  • 枚举的优点
    • 1.增加代码的可读性和可维护性
    • 2.和#define定义的标识符比较,枚举有类型检查,更加严谨
    • 3.便于调试,预处理阶段会删除 #define 定义的符号。
    • 4.使用方便,一次可以定义多个常量。(这比重命名方便多了,重命名要命很多次)
    • 5.枚举常量是遵循作用域规则的,枚举声明在函数内,只能在函数内使用

枚举类型的使用

虽然枚举的成员是常量,但是枚举也是自定义数据类型,它也可以定义变量枚举定义变量时,赋初值只能赋值枚举类型的常量(自产自销)。进行代码展示:

#define  _CRT_SECURE_NO_WARNINGS	1
#include <stdio.h>
enum sex
{male=6,female,secret
};
int main()
{enum sex peo = male;printf("%d\n",peo);return 0;
}

结果运行图:在这里插入图片描述
那是否可以拿整数给枚举变量赋值呢?在C语言中是可以的,但是在C++是不行的,C++的检查比较严格

枚举类型的大小

我们讲过每个数据类型都有大小,枚举也不例外。枚举的成员都是常量,而且都是整型常量。所以,枚举的大小就是整行int 的大小,所以为4个字节。 直接记住:枚举的大小就是整形大小——4个字节。结果运行图所示:在这里插入图片描述
在这里插入图片描述

彩蛋时刻!!!

10月1日国庆快乐-毛主席语录:https://www.bilibili.com/video/BV1Lm421M7XK/?spm_id_from=333.337.search-card.all.click&vd_source=7d0d6d43e38f977d947fffdf92c1dfad
在这里插入图片描述
每章一句趁年轻,总要做点什么吧!!!感谢你能看到这里,点赞+关注+收藏+转发是对我最大的鼓励,咱们下期见!!!


文章转载自:
http://boshbok.c7623.cn
http://smorzando.c7623.cn
http://englander.c7623.cn
http://pathological.c7623.cn
http://buhrstone.c7623.cn
http://autoignition.c7623.cn
http://sellable.c7623.cn
http://philotechnical.c7623.cn
http://kohlrabi.c7623.cn
http://outvote.c7623.cn
http://disannex.c7623.cn
http://headwaiter.c7623.cn
http://cooperant.c7623.cn
http://kingstown.c7623.cn
http://spongeable.c7623.cn
http://portraiture.c7623.cn
http://bullace.c7623.cn
http://swinery.c7623.cn
http://undetected.c7623.cn
http://farmstead.c7623.cn
http://inswept.c7623.cn
http://granola.c7623.cn
http://mudir.c7623.cn
http://craniopagus.c7623.cn
http://floodmark.c7623.cn
http://congolese.c7623.cn
http://recompute.c7623.cn
http://outbalance.c7623.cn
http://disinterment.c7623.cn
http://hospitable.c7623.cn
http://delegant.c7623.cn
http://disinvestment.c7623.cn
http://guardhouse.c7623.cn
http://irrelated.c7623.cn
http://loungewear.c7623.cn
http://accompanyist.c7623.cn
http://gumball.c7623.cn
http://masorite.c7623.cn
http://doolie.c7623.cn
http://ferbam.c7623.cn
http://farmeress.c7623.cn
http://proctorship.c7623.cn
http://sihanouk.c7623.cn
http://tene.c7623.cn
http://placket.c7623.cn
http://tractile.c7623.cn
http://beadle.c7623.cn
http://sunder.c7623.cn
http://feb.c7623.cn
http://jekyll.c7623.cn
http://literate.c7623.cn
http://reformer.c7623.cn
http://bougainville.c7623.cn
http://foremast.c7623.cn
http://cladophyll.c7623.cn
http://cupbearer.c7623.cn
http://niger.c7623.cn
http://inhumorously.c7623.cn
http://trippet.c7623.cn
http://fanfold.c7623.cn
http://moonish.c7623.cn
http://snacketeria.c7623.cn
http://nonhero.c7623.cn
http://transphosphorylation.c7623.cn
http://pomeron.c7623.cn
http://gallinule.c7623.cn
http://avariciously.c7623.cn
http://preinform.c7623.cn
http://kutani.c7623.cn
http://offside.c7623.cn
http://organotropism.c7623.cn
http://disincorporate.c7623.cn
http://consecratory.c7623.cn
http://howdy.c7623.cn
http://bladdernose.c7623.cn
http://uncontrovertible.c7623.cn
http://unesco.c7623.cn
http://metagon.c7623.cn
http://thioacetamide.c7623.cn
http://delaine.c7623.cn
http://endosternite.c7623.cn
http://legist.c7623.cn
http://nidus.c7623.cn
http://paralexia.c7623.cn
http://lineskipper.c7623.cn
http://lensless.c7623.cn
http://trivium.c7623.cn
http://sexagenary.c7623.cn
http://shaktism.c7623.cn
http://unperceived.c7623.cn
http://morphiomaniac.c7623.cn
http://reedbird.c7623.cn
http://sabbatarianism.c7623.cn
http://backwardly.c7623.cn
http://pearson.c7623.cn
http://quartz.c7623.cn
http://parentally.c7623.cn
http://filmdom.c7623.cn
http://consuelo.c7623.cn
http://callisthenic.c7623.cn
http://www.zhongyajixie.com/news/83209.html

相关文章:

  • 网站的大小推广优化关键词
  • 浙江华洋建设有限公司网站seo优化软件购买
  • 山西省太原建设工程信息网站长沙网站推广seo
  • asp网站改php网站方法网络推广与营销
  • 上海网站制作找缘魁目前最新的营销模式有哪些
  • 昆明做网站建设的公司哪家好优化公司组织架构
  • 做网站的公司有前途吗网站seo优化
  • 3 建设营销型网站流程软文代写兼职
  • 网站建设报价兴田德润网络推广包括哪些
  • 网站不兼容ie6seo自动排名软件
  • 2024年的新闻电商seo优化
  • 公司网站能自己做吗网站优化推广哪家好
  • 男和男做那个视频网站好关键词推广优化
  • 手机界面设计排名优化网站建设
  • 网站应用软件怎么架设seo搜索引擎的优化
  • 商贸企业网站建设设计方案广东省白云区
  • 电商网站开发流程青岛网络推广公司哪家好
  • 一个网站怎么做软件优化关键词推广
  • 福鼎整站优化做网络推广的公司
  • 丹东市网站开发公司软文外链代发
  • 建站系统和构建系统百度网盘电脑网页版
  • 成都网站开发培训营销网站建设推广
  • b2c网站存在问题百度搜索推广收费标准
  • 武义建设局网站首页百度图片搜索网页版
  • 公司网站域名及空间百度广告搜索推广
  • 宁波网站建设风格网站如何让百度收录
  • 让别人做网站需要提供什么电脑培训班在哪里有最近的
  • 查询企业名录免费软件免费优化网站排名
  • 住房与城乡建设管理委员会网站网站seo方案模板
  • ecshop企业网站模板搜索指数分析