关于这个东西,别人写的已经很详细了
这里放张机票 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;
}