当前位置: 代码迷 >> C语言 >> 一道很不爽的题 会的帮助解释下
  详细解决方案

一道很不爽的题 会的帮助解释下

热度:118   发布时间:2007-12-06 14:28:45.0
一道很不爽的题 会的帮助解释下
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-06 06:28:45
redice

等 级:新手上路
威 望:6
帖 子:902
专家分:0
注 册:2006-12-11
  得分:0 
题目不全吧/
----------------解决方案--------------------------------------------------------
提示: 作者被禁止或删除 内容自动屏蔽
2007-12-06 07:04:27
电之龙

等 级:新手上路
帖 子:16
专家分:0
注 册:2007-12-5
  得分:0 
抱歉,朋友,我完全看不懂这个题,不过在旁等等,看另有高手相助没~
----------------解决方案--------------------------------------------------------
看不大懂.............
----------------解决方案--------------------------------------------------------
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

对否
----------------解决方案--------------------------------------------------------
都不对,结果不确定
----------------解决方案--------------------------------------------------------
  相关解决方案