C语言,联合体共用体概念引入

本文详细介绍了C语言中结构体和联合体的使用,展示了它们在内存分配上的差异,以及注意的值覆盖问题。通过实例演示了sizeof运算符在计算结构体和联合体大小的应用。
#include <stdio.h>

struct TestT
{
	int adata;
	char cdata;
	char fdata;
};

union TestU
{
	int adata;
	char cdata;
	int fdata;
};

int main()
{
	struct TestT t1;
	union TestU t2;
	
	printf("结构体的大小是:%d\n",sizeof(t1));
	printf("联合体的大小是%d\n",sizeof(t2));
	
	t1.adata=10;
	t1.cdata='a';
	t1.fdata='r';
	printf("t1.adata的地址是%p,值是%d\n",&t1.adata,t1.adata);
	printf("t1.cdata的地址是%p,值是%c\n",&t1.cdata,t1.cdata);
	printf("t1.fdata的地址是%p,值是%c\n",&t1.fdata,t1.fdata);
	
    puts("\ndone");
	
	t2.adata=20;
	t2.cdata='Q';
	t2.fdata=9;//共用体注意值的覆盖问题。
	printf("t2.adata的地址是%p,值是%d\n",&t2.adata,t2.adata);
	printf("t2.cdata的地址是%p\n",&t2.cdata);
	printf("t2.fdata的地址是%p\n",&t2.fdata);
	
	
	
	return 0;
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值