C语言的struct与union怎么使用
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,本文小编为大家详细介绍"C语言的struct与union怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言的struct与union怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2026年11月03日C语言的struct与union怎么使用
本文小编为大家详细介绍"C语言的struct与union怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言的struct与union怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。
一、struct 的小秘密
C语言中的 struct 可以看作变量的集合
struct 的问题:空结构体占用多大内存?下面编写程序看一下吧:
#includestruct TS{ }; int main(){ struct TS t1; struct TS t2; printf("sizeof(struct TS) = %d\n", sizeof(struct TS)); printf("sizeof(t1) = %d, &t1 = %p\n", sizeof(t1), &t1); printf("sizeof(t2) = %d, &t2 = %p\n", sizeof(t2), &t2); return 0;}
下面为输出结果,可以看到在 gcc 编译器中空结构体的大小就为0。
二、结构体与柔性数组
柔性数组即数组大小待定的数组
C 语言中可以由结构体产生柔性数组
C 语言中结构体的最后一个元素可以是大小未知的数组
思考一下,下面的语句所占内存空间为多少呢,没错,就是 4。
SoftArray 中的 array 仅是一个待使用的标识符,不占用存储空间。
下面看一段柔型数组使用的代码:
#include#include struct SoftArray{ int len; int array[];}; struct SoftArray* create_soft_array(int size){ struct SoftArray* ret = NULL; if(size > 0) { ret = (struct SoftArray*)malloc(sizeof(struct SoftArray) + sizeof(int) * size); ret->len = size; } return ret;} void delete_soft_array(struct SoftArray* sa){ free(sa);} void func(struct SoftArray* sa){ int i = 0; if(NULL != sa) { for(i = 0; i < sa->len; i++) { sa->array[i] = i + 1; } }} int main(){ int i = 0; struct SoftArray* sa = create_soft_array(10); func(sa); for(i = 0; i < sa->len; i++) { printf("%d\n",sa->array[i]); } delete_soft_array(sa); return 0;}
下面为输出结果:
虽然 array[ ] 数组在定义的时候没有指定大小,但是可以在后面使用 malloc 函数来指定大小。柔性数组的好处就是 func() 函数有一个指向柔性数组的合法指针就行,不用传递要处理的数组大小。
三、C语言中的 union
C语言中的 union 在语法上与 struct 相似
union 只分配最大成员的空间,所有成员共享这个空间
如下:
union 的使用受系统大小端的影响
如下,就是定义的字面量常数 i 在大小端的存储位置:

小端模式下地址值存储低位数据,大段模式下低地址存储高位数据。
下面编写程序来判断一下系统的大小端:
#includeint system_mode(){ union SM { int i; char c; }; union SM sm; sm.i = 1; return sm.c;} int main(){ printf("System Mode: %d\n", system_mode()); return 0;}
下面为输出结果:

所以说我的电脑系统是小端
读到这里,这篇"C语言的struct与union怎么使用"文章已经介绍完毕,想要掌握这篇文章的知识点还需要大家自己动手实践使用过才能领会,如果想了解更多相关内容的文章,欢迎关注行业资讯频道。
数组
大小
语言
柔性
结构
空间
存储
就是
文章
系统
结果
输出
内容
函数
成员
数据
模式
程序
端的
处理
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
广东万易互联网科技有限公司惠州分公司
哈尔滨大商圈互联网科技有限公司
互联网科技公司经营范围
互联网科技金融
易通互联网络科技有限公司
互联网科技小额贷款
上游互联网科技
苏州大垚互联网科技
长亮科技 互联网金融
衡水科技产业互联网平台
福建科技产业互联网发展
世界互联网科技公司市值排名
成都互联网科技公司工作好不好
南博望互联网科技有限公司
互联网金融科技名词解释
深圳无忧互联网科技
福建互联网展示科技馆设计
众联互联网络科技
三亚科技创新互联网基地
承德科技产业互联网平台
咖啡豆
互联网加科技
互联网科技官网
上海喔噻互联网科技
壕鑫互联网络科技
上海卓越科技 互联网
互联网数据科技专业
广州百诚互联网科技有限公司官网
互联网科技手抄报图片
网互联网络科技