[問題] 面試遇到的複雜typedef跟位址運算

看板C_and_CPP作者 (我就是不出你能拿我怎樣)時間13年前 (2012/03/17 01:43), 編輯推噓5(507)
留言12則, 8人參與, 最新討論串1/1
某外商的考題: #define MACRO_A(P,S,F) ( (S*)( (unsigned char*)(P)- ((int)&((S*)0)->F) ) ) typedef struct_KKK { struct { int xx; int yy; int zz; }; void *link; int aaa[100]; int bbb[12]; }KKK int main() { KKK obj; printf(&obj); // 這一行印出的是0x31f780 printf(MACRO_A(&(obj.link),KKK,link); // 這一行會印出什麼? 此函數的意義為? } 希望我括號沒有括錯 從 (S*)0這邊會是什麼就不懂了... 向各位前輩請益一下~ -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 180.218.130.116 ※ 編輯: Starcraft2 來自: 180.218.130.116 (03/17 09:44)

03/17 09:57, , 1F
好像是印出 obj 的記憶體位址吧。 KKK 應該要分號
03/17 09:57, 1F

03/17 10:00, , 2F
樓上市說跟printf(&obj)的作用基本上相同?
03/17 10:00, 2F

03/17 10:02, , 3F
是這意思
03/17 10:02, 3F

03/17 10:10, , 4F
去看看offsetof的說明吧
03/17 10:10, 4F

03/17 13:11, , 5F
offsetof 是 C 的標準,去翻一下吧
03/17 13:11, 5F

03/17 18:09, , 7F
會Compile Error(無誤 少一個下括弧XD
03/17 18:09, 7F

03/17 18:31, , 8F
好面熟阿 N社?
03/17 18:31, 8F

03/17 20:21, , 9F
是 printf(&obj) 還是 printf("%p", &obj) 啊?
03/17 20:21, 9F

03/17 20:21, , 10F
前者應該不會印出 address 吧?還是我想錯了?orz
03/17 20:21, 10F

03/18 10:56, , 11F
ㄟ對 是樓上說的那樣 我都用c++比較多c不是很熟
03/18 10:56, 11F

03/18 10:56, , 12F
我會再去研究一下offsetof 謝謝前輩們~
03/18 10:56, 12F
文章代碼(AID): #1FO-nF2K (C_and_CPP)