知道元素地址如何找到包含这个元素的结构体地址

关于这个东西,别人写的已经很详细了 

这里放张机票 http://blog.csdn.net/hilyoo/article/details/4464448


下面是我写的测试代码。

实现的功能是通过struct_offset找到结构体的首地址,

并创建一个指针来对该结构体直接进行修改。

#include <stdio.h>
#include <string.h>
#define STRUCT_OFFSET(stru_name, element) (unsigned long)&((struct stru_name*)0)->element
struct manname
{
	char buf[20];
	int fdname;
};

int main(int argc,char **argv)
{
	struct manname first;
	
	first.fdname = 20;
	unsigned long ofset = STRUCT_OFFSET(manname,fdname);

	struct manname *q ;
	q = (struct manname *)((int )&(first.fdname) - ofset);


	printf("the main address = %x\n",((int )&(first.fdname) - ofset));
	printf("the first address = %x\n",&(first));


	strcpy(q -> buf,"Heloo");
	printf("%s\n",first.buf);
	return 0;	
	
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值