我感觉跟同事之间的争议点可以等价于这道面试题:
给定这样一个结构体
typedef struct house
{
int price;
} houseT;
typedef struct member
{
int num;
houseT house[1];
} memberT;
typedef struct family
{
int num;
memberT member[10];
} familyT;
familyT family;
如何获取第3个member的house的num?
A:
直接取值
result = family.member[2].num
B:
通过偏移取值
memberT *pm = NULL;
houseT *ph = NULL;
pm = family.member;
for(int i=0; i<3; i++)
{
ph = pm->house;
for(j=0; j<pm->num; j++)
{
ph++;
}
pm = (memberT *)ph;
}
result = pm->num;
我同事说选A的会拒掉,我觉得选B的我会拒掉。
--
修改:flyren911 FROM 183.221.16.*
FROM 183.221.16.*