Loading [MathJax]/jax/input/TeX/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >联合体和结构体

联合体和结构体

作者头像
楚客追梦
发布于 2023-10-18 07:45:37
发布于 2023-10-18 07:45:37
17500
代码可运行
举报
文章被收录于专栏:网页杂谈网页杂谈
运行总次数:0
代码可运行

今天洛谷的运势:

宜:开电脑、写作文(理解为博客) 忌:点外卖、唱歌

竟然宜写博客,所以,直接开始! 今天上完C++的心得! 讲课顺序:按NOI大纲,想拷一份 开始讲之前:哇塞,好高级,联合体,还是新出的,要好好听一下; 讲完:什么拉基,没一点鸟用,还不如结构体,CCF故意搞出来为难我们是吧 就浅浅的讲一下联合体: 联合体和结构体有大大的相同,所以来区分一下好吧:

结构体 struct 结构体是由一批数据组合而成的结构型数据。组成结构型数据的每个数据称为结构型数据的“成员”,其描述了一块内存区间的大小及解释意义

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct 结构体名称{
    类型 成员变量1;
    类型 成员变量2;
    ...
    类型 成员变量n;
};

局部代码示例:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
struct student  //student 结构体名字
{
    int num;
    char name[20];
    char sex;
    int age;
    double score;
    char addr[30];
};   //别忘记这个分号

num

name

sex

age

score

addr

2字节

20字节

1字节

2字节

4字节

30字节

联合体 union 在进行某些算法的C++语言编程的时候,需要使几种不同类型的变量存放到同一段内存单元中。也就是使用覆盖技术,几个变量互相覆盖。 这种几个不同的变量共同占用一段内存的结构,在C++语言中,被称作“共用体”类型结构,简称共用体,也叫联合体。

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
union 联合体名称{
    类型 成员变量1;
    类型 成员变量2;
    ...
    类型 成员变量n;
};

联合变量的声明 联合变量的声明和结构变量的声明方式相同,也有三种形式。即先定义,再声明;定义同时声明和直接声明。 以perdata类型为例,声明如下:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
union perdata
{
    int Class;
    char Office;
};
union perdata a,b;

或者可同时说明为:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
union perdata
{
    int Class;
    char Office;
}a,b;

或直接说明为:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
union
{
    int Class;
    char Office;
}a,b;

经说明后的a,b变量均为perdata类型。a,b变量的长度应等于 perdata 的成员类型中最长的长度,即等于 Class的长度,共4个字节。从图中可见,a,b变量如赋予整型值时,只使用了4个字节,而赋予字符时,可用1个字节。 一样要记得分号 盲猜你没看懂联合体的,看↓↓↓↓↓↓↓↓↓↓

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
union 
{
    int a = 65;
    char b;
};

注意:b没有赋任何值 这时进行输出:a = 65,b = ‘a’; 非常的Amzing啊 到底是WHY呢? 因为关联体里面的成员都有关联,所以b就将65转化成了字符

同理: 再进行修改:a = 97; 那b输出就是大写的A了

讲讲各个单位之间的换算:

++位(bit)是最小的存储单位 字节(Byte)是电脑能识别的最小单位++ 1B = 8bit 1KB = 1024B 1MB = 1024KB 1GB = 1024MB 1TB = 1024GB //浅浅的补充一点: 1 PB = 1024 TB 1 YB = 1024 ZB = 1024^20 EB = 1024^30

这里我感觉是最Amzing的 总结来说,就是原来的源程序可以当做另一个程序的头文件(函数) 首先,写一个程序:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
using namespace std;
void pr()
{
    cout << "Hello World!!!";   
} 

将它存储为《pr.h》

接着开一个《未命名1.cpp》

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
#include"pr.h"
using namespace std;
int main()
{
    pr();
    return 0;
}

接着直接Amzing的输出了Hello World!!! 其实就是调用一个程序

但是,注意事项:

  1. 调用的程序后缀必须为.h
  2. 调用的程序和源程序必须在同一个文件夹中
  3. 源程序中像头文件一样导入,但是要用双引号,即:#include”pr.h”

所以就来了3连翻车: 第一次:

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
《pr.h》
void pr()
{
    cout << "Hello World!!!";  
} 

报错: cout << “Hello World!!!”; 原因: 为导入头文件和命名空间,非常低级的错误,但是,这个是调用的函数,我一开始也是以为像写函数一样写就行了,没想到还要导入头文件!!!

第二次: 《未命名1.cpp》

cpp

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#include <bits/stdc++.h>
#include <pr.h>
using namespace std;
int main()
{
    pr();
    return 0;
}

报错: pr(); 原因: 导入应该用双引号

第三次: 代码:

好吧,没代码,代码都是对的 原因:没将两个文件放入一个文件夹中

另外:还讲了关键字等许许多多内容,不再一一叙述 有兴趣者可以上小g同学强力推荐的(总共104集):

OK,直接下课!!!

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
杂谈c语言——4.结构体和联合体
    各成员各自拥有自己的内存,各自使用互不干涉,同时存在的,遵循内存对齐原则。一个struct变量的总长度等于所有成员的长度之和。
hope kc
2024/09/23
870
杂谈c语言——4.结构体和联合体
打造坚实的基础:C语言的结构体、联合体和枚举
在编程中,特别是在像C和C++这样的语言中,结构体(struct)是一种用于创建复合数据类型的工具。结构体允许你将多个不同类型的数据项组合成一个单一的实体。这对于组织和管理数据非常有用,尤其是当你需要处理复杂的数据集时。
用户11029103
2024/03/19
1440
打造坚实的基础:C语言的结构体、联合体和枚举
C++016-C++结构体
在线练习: http://noi.openjudge.cn/ https://www.luogu.com.cn/
用户2225445
2023/10/16
1850
C++016-C++结构体
结构体+联合体 详解
char c1为1个字节 1<8 即c1的对齐数是1 char c2为1个字节 1<8 即c2的对齐数是1 int i为4个字节 4<8 即i的对齐数是4 最大对齐数为4 因为最后也是取 8 是4的整数倍 即 8
lovevivi
2022/11/10
3050
结构体+联合体 详解
【C语言】自定义类型(结构体、位段、枚举、联合体)
要记住结构体是一种类型,它的地位是和int这些类型是一样的,我们能用int做的事情,也可以用结构体做。唯一不同的是,结构体是通过我们自己去定义的,而int这些类型是我们c语言内置的类型
举杯邀明月
2023/04/12
6420
【C语言】自定义类型(结构体、位段、枚举、联合体)
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
联合体(union)是允许一个变量通过不同的接口访问内存的一种数据类型,表示一个变量可以存储不同类型的值,而枚举是使用enum关键字定义一组相关且互斥的整形常量集合。本章阿森将和你学习联合体类型的声明,特点,有关大小的计算,还有枚举类型的声明,优点和使用。文章干货满满!学习起来吧😃!
学习起来吧
2024/02/29
5030
【C语言】一篇文章深入解析联合体和枚举且和结构体的区别
联合体
通过两个问题作为学习联合体的记录 关键词是Union 使用方法和结构体基本无差别 唯一不同的是联合体的成员共用一块内存空间,而结构体是每个成员都有自己的空间 即Union \_Ua { int age; char str; }Ua,*PUa; &Ua=&Ua.age = &Ua.str;
用户7272142
2023/10/11
1570
联合体
深入理解 C 语言中的联合体
联合体(union)是 C 语言中的一种特殊数据结构,允许在同一内存位置存储不同类型的数据。它与结构体(struct)类似,但存在显著的差异。理解联合体的定义、基本用法、优势、存储细节及其高级用法,有助于在实际编程中有效地使用这一数据结构。
平凡之路.
2024/10/09
6450
深入理解 C 语言中的联合体
联合体和枚举
但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所以联合体也叫:共⽤体。
半截诗
2025/03/08
540
联合体(union)的使用方法及其本质
有些基础知识快淡忘了,所以有必要复习一遍,在不借助课本死知识的前提下做些推理判断,温故知新。
全栈程序员站长
2022/09/05
1.3K0
【C语言必学知识点六】自定义类型——联合体与枚举
在上一篇内容中,我们详细介绍了什么是内存对齐,以及结构体中的内存对齐以及位段的相关内容。
蒙奇D索隆
2024/12/20
680
【C语言必学知识点六】自定义类型——联合体与枚举
自定义类型:联合体和枚举
但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。
Crossoads
2024/10/21
860
自定义类型:联合体和枚举
【C语言】联合体和枚举
但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。
用户11290673
2024/09/25
970
【C语言】联合体和枚举
小代老师带你深入理解联合体
像结构体⼀样,联合体也是由⼀个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最⼤的成员分配⾜够的内存空间。联合体的特点是所有成员共⽤同⼀块内存空间。所 以联合体也叫:共⽤体。 给联合体其中⼀个成员赋值,其他成员的值也跟着变化。
用户11319080
2024/10/17
840
小代老师带你深入理解联合体
C语言学习——结构体_联合体_枚举用法直通[通俗易懂]
所谓结构体数组,是指数组中的每个元素都是一个结构体。在实际应用中,C语言结构体数组常被用来表示一个拥有相同数据结构的群体,比如一个班的学生、一个车间的职工等。
全栈程序员站长
2022/09/23
5750
C语言学习——结构体_联合体_枚举用法直通[通俗易懂]
【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
我们通常会用一个变量来定义一个事物,就比如我们要进行求和,我们通常会创建一个sum的变量来存放求和的结果,最终再打印sum,此时的sum就表示我们最终的求和结果。
诺诺的包包
2023/02/17
1.4K0
【C/自定义类型详解】——结构体(struct)、位段、枚举(enum)、联合(union)
自定义类型:联合体和枚举类型(联合体与结构体的区别)
像结构体一样,联合体也是由一个或者多个成员构成,这些成员可以不同的类型。 但是编译器只为最大的成员分配足够的内存空间。联合体的特点是所有成员共用同一块内存空间。所以联合体也叫:共用体。 给联合体其中一个成员赋值,其他成员的值也跟着变化。
走在努力路上的自己
2024/01/26
1440
自定义类型:联合体和枚举类型(联合体与结构体的区别)
干货 | 结构体、联合体嵌套使用的一些实用操作
结构体、联合体是C语言中的构造类型,结构体我们平时应该都用得很多。但是,对于联合体,一些初学的朋友可能用得并不多,甚至感到陌生。我们先简单看一下联合体:
嵌入式与Linux那些事
2021/09/03
3.7K0
干货 | 结构体、联合体嵌套使用的一些实用操作
自定义类型之结构体,枚举,联合
其实结构体是一个很重要的内容,在数据结构中,应用十分广泛.所以学好结构体也是十分重要的!
初阶牛
2023/04/06
5320
自定义类型之结构体,枚举,联合
联合体类型和枚举类型
对于联合体,其语法结构和结构体对比可以说唯一的变换就是把struct换成union,其他的都一模一样,所以我们知道了struct的语法结构相当于知道union的语法结构,其初始化和创建也就得心应手。(上篇文章已经讲了struct的语法结构(声明),这里就不讲了,不知道的可以翻到上篇文章看一下)
E绵绵
2024/04/08
1140
联合体类型和枚举类型
推荐阅读
相关推荐
杂谈c语言——4.结构体和联合体
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文