[問題] 面試遇到的複雜typedef跟位址運算
某外商的考題:
#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
03/17 09:57, 1F
→
03/17 10:00, , 2F
03/17 10:00, 2F
推
03/17 10:02, , 3F
03/17 10:02, 3F
推
03/17 10:10, , 4F
03/17 10:10, 4F
→
03/17 13:11, , 5F
03/17 13:11, 5F
→
03/17 14:43, , 6F
03/17 14:43, 6F
推
03/17 18:09, , 7F
03/17 18:09, 7F
推
03/17 18:31, , 8F
03/17 18:31, 8F
→
03/17 20:21, , 9F
03/17 20:21, 9F
→
03/17 20:21, , 10F
03/17 20:21, 10F
→
03/18 10:56, , 11F
03/18 10:56, 11F
→
03/18 10:56, , 12F
03/18 10:56, 12F