我也跟他說我coding很好
他就要考考我
考了兩題後 他發現太無趣了 就從一堆題目中找了一題出來
說這題過去沒幾個人講的出來
#define fun(A, b) (int)(&(((A *)0)->b)) typedef struct { char str[40]; int type; int maxLen; } intf;問題是fun(intf, maxLen)的值為多少
看到第一眼時 先假裝鎮定 但不解 A * 的作用
因為腦殘沒看到typedef 想說A替換後只是變數不是型別
所以就靠推理的方式理解成強制轉型為pointer 並以此位置為0
所以b的位置就是 sizeof(char) * 40 + sizeof(int)
答案是對的 還告訴我它叫offset 差點被他唬到
回家查了一下
原來這個code是在stddef.h裡
目的是做出泛型計算變數在struct的offset
沒有留言:
張貼留言