我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++中共用体的定义与应用总结

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++中共用体的定义与应用总结

定义:
使用覆盖技术,几个变量相互覆盖,从而使几个不同变量共占同一段内存的结构,成为共同体类型的结构。

共同体的定义类似结构体,不过共同体的所有成员都在同一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量。

声明共用体的一般形式为:

复制代码 代码如下:

union 共用体类型名
{
    成员列表
};

定义共用体变量的一般形式为:

共用体类型名   共用体变量名;

例如:

复制代码 代码如下:

union data{
int        i;
char   ch;
double d;
};
data a,b,c;

或者
复制代码 代码如下:

union{
int        i;
char   ch;
double d;
};
data a,b,c;

结构体变量所占长度是各成员占的内存长度之和。每个成员分别占有自己的内存单元。共用体变量所占的内存长度等于最长的成员的长度。

共用体的使用
1.不能应用共用体变量,而只能引用共用体变量中的成员。

例如:

复制代码 代码如下:

cout<<a.i;
cout<<a.ch;

2.使用共用体变量的目的是希望通过统一内存段存放几种不同类型的数据。

但是要注意,每一瞬间只能存放一种,而不是存放集中。并且,如果对新的成员变量的话,原来的成员变量的值就被覆盖了。

复制代码 代码如下:

#include<iostream>
using namespace std;
int main(){
   union data{
    char a;
    char b;
   };
   data qianshou;
   qianshou.a='q';
   cout<<qianshou.a<<endl;
   qianshou.b='m';
   cout<<qianshou.a<<endl;
   return 0;
}


后来,我们对共用体中的成员b进行了赋值,结果我们输出的是成员a,输出的是b的值,所以证明它们是公用地址的。

3.不能对共用体变量名赋值,不能企图引用变量名来得到一个值;不能在定义共用体变量时对它初始化,不能用共用体变量名作为函数参数。

一个共同体的实例:
设有若干个人员的数据,其中有学生和老师。学生的数据包括:姓名,编号,性别,职业,年级。老师的数据包括:姓名,编号,性别,职业,职务。可以看出,学生和老师所包含的数据是不同的。先要求把他们放在同一个表格中:


要求设计程序输入人员信息然后输出。

如果把每个人都看作一个结构体变量的话,可以看出老师和学生的前4个成员变量是一样的,并且第五个成员变量可能是class或者position,当第四个成员变量是s的时候,第五个成员变量就是class;当第四个成员变量是t的时候,第五个成员变量就是position。

复制代码 代码如下:

#include<iostream>
#include<string>
using namespace std;
int main(){
   struct{
      string name;
      string num;
      char   sex;
      char   job;
      union{
       char grade[5];
       char position[5];
      }p;//定义了一个共同体变量
    }person[2];//定义了一个结构体数组变量
   int i=0;
   cout<<"name\tnum\tsex\tjob\tclass/position"<<endl;
   for(;i<2;i++){
 cin>>person[i].name>>person[i].num>>person[i].sex>>person[i].job;
 if(person[i].job=='s')cin>>person[i].p.grade;
 else cin>>person[i].p.position;   
   }
   i=0;
   cout<<"===========show data==========="<<endl;
   for(;i<2;i++){
    cout<<person[i].name<<"\t";
    cout<<person[i].num<<"\t";
    cout<<person[i].sex<<"\t";
    cout<<person[i].job<<"\t";
    if(person[i].job=='s')cout<<person[i].p.grade<<endl;
 else cout<<person[i].p.position<<endl;            
   }
   cout<<endl;
   return 0;
}

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

C++中共用体的定义与应用总结

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

C++中共用体的定义与应用总结

共同体的定义类似结构体,不过共同体的所有成员都在同一段内存中存放,起始地址一样,并且同一时刻只能使用其中的一个成员变量
2022-11-15

c++中的结构体怎么定义

c++ 中的结构体是一种存储不同数据类型的数据类型,语法为 struct structure_name { // 数据成员声明 }。结构体成员可使用点运算符访问,例如 person.name。C++ 中的结构体定义结构体是一种数据类型,允
c++中的结构体怎么定义
2024-05-11

枚举类型的定义和应用总结

如果一种变量只有几种可能的值,可以定义为枚举类型。所谓“枚举类型”是将变量的值一一列举出来,变量的值只能在列举出来的值的范围内
2022-11-15

C语言中的结构体和共用体怎么使用

这篇文章主要介绍了C语言中的结构体和共用体怎么使用的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇C语言中的结构体和共用体怎么使用文章都会有所收获,下面我们一起来看看吧。结构体 / struct结构体的定义声明一
2023-06-16

c语言中怎么使用typedef定义结构体

在C语言中,可以使用typedef关键字来定义结构体,使得结构体的类型名称更加简洁易用。以下是使用typedef定义结构体的一般形式:```ctypedef struct {// 结构体成员变量data_type member1;data_
2023-08-15

Android中使用自定义ViewGroup的总结

分类 自定义Layout可以分为两种情况。自定义ViewGroup,创造出一些不同于LinearLayout,RelativeLayout等之类的ViewGroup。比如:API 14以后增加的GridLayout、design suppo
2022-06-06

怎么在c#中利用结构体实现共用体

怎么在c#中利用结构体实现共用体?相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希望你能解决这个问题。理解 C 语言的共用体在 C 语言中,共用体是一种特殊的数据类型,允许你使用相同的一段内存空间存储
2023-06-14

C语言中结构体和共用体如何使用

本篇文章给大家分享的是有关C语言中结构体和共用体如何使用,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。结构体 / struct结构体的定义声明一个结构体类型的一般形式为:str
2023-06-16

C语言中结构体和共用体的示例分析

这篇文章给大家分享的是有关C语言中结构体和共用体的示例分析的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。一、实验目的掌握结构体类型变量的定义和使用;掌握结构体类型数组的概念和应用;掌握链表的概念,初步学会对链表进
2023-06-20

java中结构体怎么定义和使用

在Java中,没有直接的结构体(Struct)的概念,但可以通过定义一个类来实现类似的功能。下面是一个示例代码,演示如何定义和使用一个类作为结构体的替代方案:```javapublic class MyStruct {public int
2023-09-09

如何进行C语言结构体的定义和使用

本篇文章为大家展示了如何进行C语言结构体的定义和使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。1.1: 结构体用来干嘛?生活中我们会遇到很多的表格,就比如你的学习成绩表,有姓名 ,学号,各科的成
2023-06-22

C++中的指针与引用的定义

本篇内容主要讲解“C++中的指针与引用的定义”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++中的指针与引用的定义”吧!1、指针和引用的定义 在深入介绍之前我们首先来看一下指针和引用的定义、指
2023-06-17

C语言之结构体定义typedef struct用法详解

在C语言中,使用struct关键字可以定义一个结构体类型,用于存储不同类型的数据。为了方便使用,可以使用typedef关键字给结构体类型取一个别名。typedef struct的用法如下:1. 通过struct关键字定义一个结构体类型:``
2023-08-09

SQLite3与C/C++的结合应用

这是前几天上面派下来的需求,说要在本地存储大约6W条数据,因为虽然webservice比较方便,但是每次请求时都要传输这6W条数据,不免有点费流量,毕竟客户端用的都是3G的笔记本。于是就开始在网上寻求解决方案。首先想到的是XML,但后来马上
2023-01-31

C语言结构体数组怎么定义和使用

这篇文章主要讲解了“C语言结构体数组怎么定义和使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C语言结构体数组怎么定义和使用”吧!介绍一个结构体变量可以存放一个学生的一组信息,可是如果有
2023-06-25

C++中引用的使用总结

以下是对C++中引用的使用进行了详细的总结介绍,需要的朋友可以过来参考下,希望对大家有所帮助
2022-11-15

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录