c 指针 强制转换

typedef struct jvm_class {
u4 class_magic;
u2 minor_version;
u2 major_version;
u2 access_flag;
u2 this_class;
u2 super_class;
u2 constant_pool_count;
u2 interfaces_count;
u2 fileds_count;
u2 method_count;
char class_file[1024];
struct constant_info_st *constant_info;
struct list_head interface_list_head;
struct list_head filed_list_head;
struct list_head method_list_head;
u2 attributes_count;
CLASS_SIGNATURE *signature;
CLASS_SYNTHETIC *synthetic;
CLASS_CONSTANT *constant;
CLASS_DEPRECATED *deprecated;
struct list_head list;
}CLASS;

求大神帮我解释一下这句是什么意思
(char *)&(((CLASS *)0x0)->list)

 (char *)&(((CLASS *)0x0)->list)
 0x0转换成结构体指针CLASS *
 指针的成员list的地址转换成字符指针char *

(char *)&(((CLASS *)0x0)->list)
指的是将0地址开始的一段数据做为class结构体数据存储区域,然后将结构体中的list数据区域强制转换为char型指针(或char型数组)