如果定义一个结构体A,用其定义一个变量a,我们由a访问结构体中变量时,有时候会直接想到用"&a+30"(此时30是偏移字节),事实上并不是在&a上加30,应将&a进行以下强转例如:“(char *)&a+30”,最好是在获得地址后将其转成char*类型的,因为char*是单字节的。
其实,结构体内部变量的地址,不止跟其相对于结构体首地址有关,还跟整个工程的结构体字节对齐方式有关,关于对齐方式:#pragma pack(n)可用这个进行设置
对齐方式的相关问题可以上网上搜,很多的
一些相关的网页:
结构体字节对齐:
由结构体变量地址求首地址:
宏CONTAINING_RECORD 详解.doc(关于结构体这个问题的)
http://pan.baidu.com/s/1tELvf