最近在网上看到了一道百度的程序阅读笔试题,觉得很考基础知识,拿出来与各位分享一下,
在VC6.0编译器下,输出结果是120
首先结构体st_t的大小是40字节,st为一个长度为16的结构体对象数组。第9行st[2].errstr是数组名,将其与32做强行加法,退化为一个指针,强行偏移32个"char",所以强制类型转换后的它将指向st[3].status的低字节(对小端系统而言)。
第10行,强制类型转换后的st指向st[]数组中第一个结构体的第一个元素的低字节(同上),两个指针做差,因为是char型指针,得到的是
两个指针做差,得到的是它们之间的字节数,即3*sizeof(struct st_t),即120。请各位高手指点,可能分析得不是完全对。