如何从它的成员的地址结构的起始地址 [英] how to get struct's start address from its member's address

查看:113
本文介绍了如何从它的成员的地址结构的起始地址的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在C语言中,如何从它的成员的地址得到结构的起始地址?

In C language, how to get struct's start address from its member's address?

struct type1 {
    //...
    int member1;
    //...
};
struct type1 obj1;

ptr1的为成员 member1中 OBJ1 ,如何界定结果
的#define start_add(ptr1的,TYPE1,member1中)来得到OBJ1的结果
起始地址?

And ptr1 is the address of member member1 in obj1, how to define
macro #define start_add(ptr1, type1, member1) to get obj1's
start address?

推荐答案

您可以做到这一点使用 offsetof

You can do this using offsetof:

#define start_add(ptr1, type1, member1) ((type1 *)((char *)(ptr1) - offsetof(type1, member1)))

这篇关于如何从它的成员的地址结构的起始地址的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆