union内存认知

union内存认知

#pragma once
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<cstdlib>
using namespace std;
union UnionTest {
	UnionTest() :i(10) {};
	int i;
	double d;
};
static union {
	int i;
	double d;
};
void test01()
{
	UnionTest u;
	union {
		int i;
		double d;
	};
	cout << u.i << endl;/*输出union 联合的10*/
	::i = 20;
	cout << ::i << endl;/*输出全局静态匿名联合的i=20*/
	i = 30;
	cout << i << endl;/*输出局部匿名联合的i=30*/
	return;
}

union test

{

	int a;

	char b;

};



//大端模式返回0,小端模式返回1

int is_little_endian(void)

{

	union test u1;

	u1.a = 1;
	printf("u1.a地址:%p\n", &u1.a);
	printf("u1.b地址:%p\n", &u1.b);

	return u1.b;

}
/*指针测试方法*/
int is_little_endian2(void)
{
	/*实现测试的关键是共用体里面的char读取是从低位开始读取*/
	int a = 1;
	char b = *((char*)(&a));
	return b;
}
void test02()
{
	int ret = -1;
	ret = is_little_endian();
	if (1 == ret)
	{
		printf("小端模式\n");
	}
	if (0 == ret)
	{
		printf("大端模式\n");
	}
}
int main()
{
	test02();


	system("pause");
	return EXIT_SUCCESS;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值