C语言的struct与union怎么使用
发表于:2024-11-14 作者:千家信息网编辑
千家信息网最后更新 2024年11月14日,本文小编为大家详细介绍"C语言的struct与union怎么使用",内容详细,步骤清晰,细节处理妥当,希望这篇"C语言的struct与union怎么使用"文章能帮助大家解决疑惑,下面跟着小编的思路慢慢
千家信息网最后更新 2024年11月14日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安全错误
数据库的锁怎样保障安全
盛京医院网络安全管理
杀毒软件开发商
学习通网络技术基础
外服服务器ip
新闻时事点评网络安全
地籍数据库更新做法
昆明工业计算机网络技术
csgo选完服务器开不开
互联网科技标准色
中华人民网络安全法颁布日期
消防知识及网络安全
账本服务器
原味视频手机 服务器未响应
软件开发 摊销 成本
erp分销软件开发维护
移动宽带上电信服务器
成长守护平台服务器错误
画质怪兽如何在作者的服务器下载
创建id时服务器错误
电力系统 软件开发
服务器管理器配置网站
计算机网络技术毕业实验总结
微信小程序第三方服务器安全
保靖公安网络安全大队
网吧用什么样的服务器
我的世界地球ol服务器怎么进入
电脑本机服务器
数据库算不算物联网
腾讯云服务器建pi
量化数据库产品购销合同