您的位置:首页 > 其它

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

2014-12-29 00:56 225 查看
关于这个东西,别人写的已经很详细了 

这里放张机票 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;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: