知道元素地址如何找到包含这个元素的结构体地址
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;
}
这里放张机票 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;
}
相关文章推荐
- 如何通过结构体中的任意一个元素的地址得到这个结构体的首地址(container_of)
- 如何通过一个结构体成员变量的地址找到该结构体的首地址
- 如何通过一个结构体成员变量的地址找到该结构体的首地址?
- [c]如何通过结构体元素找到结构体?
- 如何通过结构体元素找到结构体?
- [c]如何通过结构体元素找到结构体?
- 如何通过一个结构体成员变量的地址找到该结构体的首地址?[备忘]
- 请教:如何知道当前所用的gcc调用的是哪个版本的glibc库?及这个glibc库的位置?谢谢!
- 如何通过崩溃地址找到出错的代码行(ZT)
- 虽然能通过minidump找到崩溃地址,但仍然不清楚崩溃原因!如何办?
- 如何在单向链表中找到倒数第N个元素
- 如何通过崩溃地址找到出错的代码行
- 删除文件时,如何知道这个文件被啥程序引用了
- 如何找到网页图片地址并下载到本地保存?
- 如何让包含了浮动得元素被撑开
- 在linux程序里面,知道一个函数地址,改函数是属于某个动态库的,怎么样得到这个动态库的全路径名(转)
- 如何通过崩溃地址找到出错的代码行
- 如何通过崩溃地址找到出错的代码行
- 如何通过崩溃地址找到出错的代码行(ZT)
- 如何知道是哪个进程造成死锁?如何把这个进程杀掉?