C语言----共用体

共用体:

union //联合--共用体

早期的时候,计算机的硬件资源有限,

能不能让多个成员变量 公用同一块空间

使用方式 类似 结构体 --- 也是构造类型

struct 结构体名

{

成员变量名

};

union 共用体名

{

成员变量名

}; //表示构造了一个共用体类型

//定义变量

//定义指针

//定义数组

//做函数形参

//做函数返回值类型

注意:

1.共用体类型的大小 = 最大的成员的大小

2.共用体初始化,只能写一个值,这个值是给第一个成员变量的值

3.共用体成员的访问方式 和 结构体一样

4.共用体因为公用同一块空间

赋值时,后赋值的会影响前面赋值的结果

5.用途

a.节省空间

校园人员管理系统

struct student

{

char name20;

int sno;

float score;

};

struct teacher

{

char name20;

int tno;

float salary;

};

struct member

{

char name20;

int no;

union

{

float salary;

float score;

}data;

};

struct member s;

printf("score = %f\n",s.data.score);

struct member t;

printf("score = %f\n",s.data.salary);

b.数据转换

192.168.0.59 //ip地址 --- 网络环境中 ---实际对应是一个32位的数值

#include <stdio.h>

union Ip

{

unsigned char ip4;

unsigned int iip;

};

int main(int argc, const char *argv\[\])

{

union Ip d = {192,168,0,59};

printf("ip = %#x\n",d.iip);

return 0;

}

相关推荐
yyy(十一月限定版)9 小时前
224redfg
c语言
2601_9628857210 小时前
如何用 Python 自动识别股票的支撑位与压力位?
开发语言·python
爱吃奥利奥_wen10 小时前
面向对象三板斧:封装、继承、多态,到底在“装“什么、“承“什么、“变“什么?
开发语言·经验分享·c#
我可能是个假开发10 小时前
FTP Unicode 文件名导致 `550` 的问题分析与解决方案
java·开发语言·spring
小师兄吃牛肉11 小时前
C语言中的nullptr有必要吗
c语言·c++·算法
WL学习笔记11 小时前
日期类(C++)
开发语言·c++·日期类实现
谢亮_vipxieliang12 小时前
Go map与结构体的正确使用
开发语言·golang·哈希算法
H.莓飛12 小时前
【C++】命名空间、缺省参数、函数重载与引用
linux·开发语言·c++·visual studio
lhbweilai12 小时前
深挖FreeRTOS内核实现(三)
c语言·stm32·单片机
xxwl58512 小时前
数据结构知识点和代码实现总结(C语言实现)
c语言·开发语言·数据结构