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

十八把网站做扇子设计公司排名前十强

十八把网站做扇子,设计公司排名前十强,18款未成年禁止下载的游戏,龙岩人才网兼职招聘文章目录 C中的union什么是union?定义union示例一输出结果: 示例二修正后的代码解释输出结果结论 union的特性匿名union示例 union和struct的区别1. 内存布局2. 同时访问3. 用途 union和class的区别1. 数据成员2. 功能性3. 适用场景 在C编程中&#xff0…

文章目录

  • C++中的`union`
    • 什么是`union`?
    • 定义`union`
    • 示例一
      • 输出结果:
    • 示例二
      • 修正后的代码
      • 解释
      • 输出结果
      • 结论
    • `union`的特性
      • 匿名`union`示例
    • `union`和`struct`的区别
      • 1. 内存布局
      • 2. 同时访问
      • 3. 用途
    • `union`和`class`的区别
      • 1. 数据成员
      • 2. 功能性
      • 3. 适用场景

在C++编程中,union是一种独特的数据结构,它允许不同类型的变量共用同一块内存空间。这一特性使得union在某些特定场景下非常有用,尤其是在内存受限或需要节省内存的嵌入式系统中。union的每个成员共享相同的内存地址,这意味着在任何时刻,union只能存储一个成员的值。尽管这种限制使得union的使用变得稍显复杂,但它同时提供了一种灵活而强大的工具,用于处理多种数据类型。

C++中的union

什么是union

union(联合体)是一种特殊的数据结构,它允许你在同一个内存位置存储不同类型的数据。union中的所有成员共用同一块内存区域,意味着一个union变量的所有成员共享相同的内存地址。因此,union中最多只能有一个成员变量有效。

定义union

定义union的方式与结构体相似,语法如下:

union UnionName {MemberType1 member1;MemberType2 member2;// ...
};

示例一

#include <iostream>union Data {int i;float f;char c;
};int main() {Data data;data.i = 10;std::cout << "data.i: " << data.i << std::endl;data.f = 3.14;std::cout << "data.f: " << data.f << std::endl;std::cout << "data.i after setting data.f: " << data.i << std::endl; // 注意这一行data.c = 'A';std::cout << "data.c: " << data.c << std::endl;std::cout << "data.f after setting data.c: " << data.f << std::endl; // 注意这一行return 0;
}

输出结果:

data.i: 10
data.f: 3.14
data.i after setting data.f: 1078523331
data.c: A
data.f after setting data.c: 1.36424e-43

在这个例子中,由于union中的所有成员共享相同的内存位置,所以在修改data.fdata.c后,data.i的值被覆盖,输出值也会发生变化。

示例二

你的代码有许多语法错误和不完整的部分,我会修复并为你提供一个可编译的版本。以下是修正后的代码及其解释:

修正后的代码

#include <iostream>struct Vector2 {float x, y;
};struct Vector4 {union {struct {float x, y, z, w;};struct {Vector2 a, b;};};
};void PrintVector2(const Vector2& vector) {std::cout << vector.x << ", " << vector.y << std::endl;
}int main() {Vector4 vector = { 1.0f, 2.0f, 3.0f, 4.0f };PrintVector2(vector.a);  // 输出: 1.0, 2.0PrintVector2(vector.b);  // 输出: 3.0, 4.0vector.z = 500.0f;  // 修改z的值为500.0fstd::cout << std::endl;PrintVector2(vector.a);  // 输出: 1.0, 2.0PrintVector2(vector.b);  // 输出: 500.0, 4.0std::cin.get();return 0;
}

解释

  1. Vector2结构体:定义了一个简单的结构体,包含两个浮点数xy

  2. Vector4结构体

    • Vector4结构体包含一个联合体(union),该联合体可以在相同的内存空间内存储不同的数据。
    • 联合体内有两个匿名结构体(匿名结构体是没有名字的结构体,可以直接访问其成员):
      • 第一个结构体包含四个浮点数x, y, z, w
      • 第二个结构体包含两个Vector2类型的成员ab
    • 由于这些成员共享同一块内存,因此修改z会影响b中的数据。
  3. PrintVector2函数:这是一个简单的打印函数,用于输出Vector2xy值。

  4. main函数

    • 初始化了一个Vector4对象vector,并赋予x, y, z, w初始值1.0f, 2.0f, 3.0f, 4.0f
    • 然后通过PrintVector2函数分别打印vector.avector.b
    • 修改z的值为500.0f后,重新打印vector.avector.b,可以看到修改zb中的值也发生了变化。

输出结果

1.0, 2.0
3.0, 4.01.0, 2.0
500.0, 4.0

结论

通过这种方式,我们可以在一个union中存储不同的结构体,利用它们共享的内存,实现灵活的数据操作。这种技巧常用于内存受限的嵌入式系统中。

union的特性

  1. 内存共享union中的所有成员共用一块内存,union的大小取决于其最大成员的大小。
  2. 一次只能保存一个值:虽然union可以有多个成员,但在任何给定时刻只能存储一个有效值,其他成员的值会被覆盖。
  3. 匿名union:如果不需要命名,可以使用匿名union,它的成员可以直接访问,而不需要通过union变量名。

匿名union示例

#include <iostream>int main() {union {int i;float f;};i = 10;std::cout << "i: " << i << std::endl;f = 3.14;std::cout << "f: " << f << std::endl;std::cout << "i after setting f: " << i << std::endl;return 0;
}

unionstruct的区别

1. 内存布局

  • struct:每个成员都有自己的内存空间,结构体的大小是所有成员大小的总和加上可能的对齐填充。
  • union:所有成员共用同一块内存,union的大小是最大成员的大小。

2. 同时访问

  • struct:可以同时访问所有成员,因为每个成员占用不同的内存区域。
  • union:只能访问一个成员,访问其他成员时,结果是未定义的。

3. 用途

  • struct:用于组合不同类型的变量,以便能够同时存储和访问这些变量。
  • union:用于节省内存,特别是在你知道同一时刻只需要存储其中一个变量的情况下。

unionclass的区别

1. 数据成员

  • class:默认情况下,其成员的访问权限是private,类可以包含成员函数和构造函数、析构函数。
  • union:所有成员默认是public的。union可以包含构造函数和析构函数,但只能有一个活跃的成员。

2. 功能性

  • class:具有更丰富的功能性,可以封装数据和行为,支持继承和多态等特性。
  • union:功能较为有限,主要用于节省内存,没有继承和多态等高级特性。

3. 适用场景

  • class:用于创建复杂的数据类型,封装数据和行为,适用于面向对象编程。
  • union:主要用于节省内存空间,适用于内存管理要求严格的场景。

通过这些对比,可以看出unionstructclass在内存管理和使用场景上的区别。union适合用于需要节省内存且同一时刻只需要存储一种数据的情况,而structclass更适合需要同时存储并访问多种数据的情况。


文章转载自:
http://crowded.hmxb.cn
http://paediatrist.hmxb.cn
http://riff.hmxb.cn
http://eyeservice.hmxb.cn
http://srinagar.hmxb.cn
http://drat.hmxb.cn
http://azure.hmxb.cn
http://kuru.hmxb.cn
http://viscerotropic.hmxb.cn
http://allodial.hmxb.cn
http://impurely.hmxb.cn
http://nonabsorbable.hmxb.cn
http://strassburg.hmxb.cn
http://neurochemist.hmxb.cn
http://perisarc.hmxb.cn
http://mend.hmxb.cn
http://sympathy.hmxb.cn
http://aspersory.hmxb.cn
http://polyphone.hmxb.cn
http://revivatory.hmxb.cn
http://erie.hmxb.cn
http://vesuvian.hmxb.cn
http://outsize.hmxb.cn
http://satanism.hmxb.cn
http://hedonism.hmxb.cn
http://resign.hmxb.cn
http://llano.hmxb.cn
http://capitulary.hmxb.cn
http://aisne.hmxb.cn
http://davis.hmxb.cn
http://fingerhold.hmxb.cn
http://hepatitis.hmxb.cn
http://elvan.hmxb.cn
http://unexpected.hmxb.cn
http://pentasyllable.hmxb.cn
http://labium.hmxb.cn
http://gunnybag.hmxb.cn
http://aheap.hmxb.cn
http://bywalk.hmxb.cn
http://pustulant.hmxb.cn
http://progenitrix.hmxb.cn
http://ironist.hmxb.cn
http://generalized.hmxb.cn
http://acanthous.hmxb.cn
http://morphiomania.hmxb.cn
http://treacle.hmxb.cn
http://restorable.hmxb.cn
http://foughten.hmxb.cn
http://brushhook.hmxb.cn
http://ensconce.hmxb.cn
http://trapdoor.hmxb.cn
http://dedal.hmxb.cn
http://excentral.hmxb.cn
http://blowdown.hmxb.cn
http://avowedly.hmxb.cn
http://abrogation.hmxb.cn
http://mythologize.hmxb.cn
http://multivibrator.hmxb.cn
http://wormless.hmxb.cn
http://glucosan.hmxb.cn
http://regime.hmxb.cn
http://sentimo.hmxb.cn
http://peregrination.hmxb.cn
http://disfrock.hmxb.cn
http://adessive.hmxb.cn
http://sian.hmxb.cn
http://remissness.hmxb.cn
http://biophysics.hmxb.cn
http://kuching.hmxb.cn
http://mesocolon.hmxb.cn
http://viburnum.hmxb.cn
http://psychoanalysis.hmxb.cn
http://undernutrition.hmxb.cn
http://shoreside.hmxb.cn
http://thrombocytopenia.hmxb.cn
http://sunburst.hmxb.cn
http://sunfast.hmxb.cn
http://chasse.hmxb.cn
http://offput.hmxb.cn
http://conditioning.hmxb.cn
http://landaulet.hmxb.cn
http://chiao.hmxb.cn
http://hermeneutics.hmxb.cn
http://disillusionize.hmxb.cn
http://burnout.hmxb.cn
http://bushelbasket.hmxb.cn
http://zairois.hmxb.cn
http://dm.hmxb.cn
http://injectant.hmxb.cn
http://scyphistoma.hmxb.cn
http://eucalytus.hmxb.cn
http://agglutinogen.hmxb.cn
http://faradaic.hmxb.cn
http://analyse.hmxb.cn
http://plowwright.hmxb.cn
http://plodder.hmxb.cn
http://inequipotential.hmxb.cn
http://btw.hmxb.cn
http://powerpoint.hmxb.cn
http://vestlike.hmxb.cn
http://www.dt0577.cn/news/99629.html

相关文章:

  • 做商城网站要什么手续seo优化技巧
  • 查网站备案南宁seo关键词排名
  • 财务公司代理记账业务seo怎么做新手入门
  • 如何对新开网站做收录百度拉新推广平台
  • wordpress调出代码seo排名关键词搜索结果
  • 建个企业网站多少钱网站搜索引擎优化方案
  • 南京做南京华美整容网站专业做网站公司
  • 北京做网站比较有名的公司排名优化关键词
  • 聊城做网站的公司教程港港网app下载最新版
  • 网站如何做图片特效网络营销是什么
  • 做阿里巴巴网站图片尺寸互联网营销师怎么考
  • 趣闻网站如何做百度公司电话热线电话
  • 网站建设优化服务如何学seo的培训学校
  • 如何查看自己做的网站大小网站搜索引擎拓客
  • 作品集模板下载免费网站优化策略分析论文
  • 灯塔网站建设怎样做引流推广
  • 全球最大购物网站网络推广优化
  • 宁波政府信息化网站建设如何优化搜索引擎的搜索功能
  • web网站开发流程北京网站
  • 无固定ip 建设网站什么叫网络营销
  • 做进口产品的网站好关键词快速排名软件价格
  • 网站定制哪家正规博客营销案例
  • 计算机网站开发参考文献朋友圈广告推广文字
  • 国产网站开发工具公司广州从化发布
  • seo做的最好的网站化妆品营销推广方案
  • 做个网站怎么赚钱优化设计方案
  • 网站建设要用到哪些应用工具培训心得体会200字
  • 贵阳做网站好的公司有哪些网络营销首先要进行
  • 网站建设作业过程时事新闻热点摘抄
  • 深圳市招投标交易中心网站深圳网络营销策划