古詩詞大全網 - 成語經典 - #define offsetof(TYOE,MEMBER) ((int)&((TYPE *)0)->MEMEBER)這個該怎麽理解啊

#define offsetof(TYOE,MEMBER) ((int)&((TYPE *)0)->MEMEBER)這個該怎麽理解啊

這個表達式分兩部分看,首先確定運算符的優先級,在上面的表達式中,->最高,&取地址次之,(類型)類型轉換最低,故可以這麽看:

1.(int)&(...),表示將右邊括號內的先取地址,然後將地址的值強制轉換為int型;

2.要引用常數地址0的變量,在C語言中是不允許的,必須進行類型轉換,故((TYPE *)0)是將地址0強制轉換為TYPE結構提類型的指針,((TYPE *)0)->MEMEBER則就是引用地址0處的TYPE結構提體的變量MEMEBER,

3.結合第1和第2點,慢慢理解,希望對妳有用