抱歉,朋友,我完全看不懂这个题,不过在旁等等,看另有高手相助没~
----------------解决方案--------------------------------------------------------
看不大懂.............
----------------解决方案--------------------------------------------------------
struct tagABC
{
char cB;
short sC;
char cD;
long lA;
} *pAbc;
pAbc = 0x100000;
pAbc + 0x100 == 100c00
(unsigned long)pAbc == 100000
(unsigned long)pAbc + 0x100 == 100100
(char *)pAbc + 0x100 == 100100
//
[[italic] 本帖最后由 cosdos 于 2007-12-7 00:01 编辑 [/italic]]
----------------解决方案--------------------------------------------------------
这个题目主要是考查指针做加法时的方法.
比如:
int a[10]={0};
int *p=a;
p++;/*p自加的时侯不是地址加1,而地址加上sizeof(int)*/
----------------解决方案--------------------------------------------------------
pAbc + 0x100 相当于地址加上0x100*sizeof(struct tagABC)
(ULONG)pAbc + 0x100相当地址加上0x100*sizeof(ULONG)
(ULONG *)pAbc + 0x100相当地址加上0x100*sizeof(ULONG *)
(char *)pAbc + 0x100相当地址加上0x100*sizeof(char *)
----------------解决方案--------------------------------------------------------
100100
100100
100400
100100
对否
----------------解决方案--------------------------------------------------------
都不对,结果不确定
----------------解决方案--------------------------------------------------------