VC结构体实现类似数组的下标操作符功能

本文探讨了如何利用C++的结构体和union来模拟数组的下标操作功能。虽然在实际开发中并不推荐,但这种技术上的探索揭示了共同体union在内存共享方面的特性。通过定义一个包含union的结构体,可以实现不同类型的成员并支持下标访问。
摘要由CSDN通过智能技术生成

在某些特殊时候,我们会想如果结构体也能向数组一样通过下标操作符进行操作的话,代码将直接通过循环语句就能实现,尤其当我们的数据来源于数据库获得的数据集时,这种用法还是比较有意思的。

结构体的下标操作这里只做技术上研究,实际开发中非常不提倡这么用。原因是这种结构体当成员很多时结构体占用内存将会非常大(结构体SIZE=MAX(成员SIZE)*成员数),而当结构体成员很少时完全没有必要用下标操作符。这种结构体的下标操作符在实际开发应用中,几乎是没有可用价值的。

要实现结构体的下标操作符,我们需要了解,我们所设定的结构体的成员大小必须有规律,那我们直接假设各成员的内存大小是相等的,就比较简单了。怎么样才能使结构体的成员内存大小都一样,而且我们还要使结构体支持不同类型的成员?这时就可以想到共同体union了,共同体的好处是各成员共享内存。

按这个思路,我们首先将我们需要的类似通过共同体自定义一种新的统一类型:

typedef union __un_MY_VAR
{
	BYTE buf[1024];
	TCHAR cBuf[512];
	int iRs;
	float fRs;
	double dfRs;

	__un_MY_VAR()
	{
		clear();
	}

	void clear()
	{
		memset(buf,0,1024);
	}

} MYVAR;

以上我定义了一个新类型MYVAR,支持字符串、整形和浮点型。然后我们就可以用该新类型进行结构体的定义了:

typedef 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值