共用体的成员与特性

共用体的成员与特性

#include "stdafx.h"
#include <string.h>

#if 0

结构体的大小是由所有成员空间大小组合而成
共用体的大小是由最大的成员空间大小决定的

结构体每一个成员都是拥有自己的地址
而共用体每一个成员共同拥有一个起始地址

虽然所有成员共用一段内存,但是真正意义的,
只有最后一赋值的变量是有意义的


union untest
{
	unsigned char c;
	unsigned short s;
	unsigned int i;
}myun;

printf("sizeof(myun)=%d\n", sizeof(myun));

printf("%p\n", &myun.c);
printf("%p\n", &myun.s);
printf("%p\n", &myun.i);
//打印的地址相同


myun.i = 0x11223344;
printf("myun.i=%x\n", myun.i);//11223344
printf("myun.s=%x\n", myun.s);//3344
printf("myun.c=%x\n", myun.c);//44

#endif


union untest
{
	char str[10];
	int var;
}myun;


int _tmain(int argc, _TCHAR* argv[])
{
	strcpy(myun.str, "china");
	printf("myun.str=%s\n", myun.str);//china
	printf("myun.var=%s\n", myun.var);//显示有误

	myun.var = 200;
	printf("myun.var=%s\n", myun.var);//200
	printf("myun.str=%s\n", myun.str);//显示有误
	return 0;
}


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值