MS 笔试题

AntonlioX 2005-10-13 12:30:25
struct S {
int i;
int * p;
};
void main()
{
S s;
int * p = &s.i;
p[0] = 4;
p[1] = 3;
s.p = p;
s.p[1] = 1;
s.p[0] = 2;
}
问程序会在哪一行死掉。why
...全文
891 24 打赏 收藏 转发到动态 举报
写回复
用AI写文章
24 条回复
切换为时间正序
请发表友善的回复…
发表回复
majinyi 2005-10-17
  • 打赏
  • 举报
回复
因为p[1]所得到的地址是指针下一个位置,应该是已经有了的地址+4
你的p[1000]是已有的地址加4*1000
xiaochongvip 2005-10-14
  • 打赏
  • 举报
回复
为什么这一句能行 p[1] = 3;
,p[1]不是也没有分配内存吗,
我测试 p[1000]=3也行啊,总感觉不行呢
解释下下
wuming2003 2005-10-13
  • 打赏
  • 举报
回复
最后一行
记s.i的地址为a,s.p的地址为b, 即a = &s.i,b = &s.p, b = a+4

p = &s.i // 则 p = a;
s.p = p // *b = p = a;
s.p[1] = 1 // 即 *(*b + 4) = *(a+4) = *b = 1;
s.p[0] = 2 // 即 **b = *(1) 对地址0x00000001赋值非法
shining 2005-10-13
  • 打赏
  • 举报
回复
wuming2003(无名)同志比较厉害!
敬礼!
yuanjian_530 2005-10-13
  • 打赏
  • 举报
回复
严重支持 wxyeeis(雨) ( ) 信誉:100 正解
pomelowu 2005-10-13
  • 打赏
  • 举报
回复
嘿嘿~
wxyeeis 2005-10-13
  • 打赏
  • 举报
回复
恩你说的对,我才看明白
现在好菜啊
大家多指教
yzx1983 2005-10-13
  • 打赏
  • 举报
回复
……被羽战士插了一楼……
yzx1983 2005-10-13
  • 打赏
  • 举报
回复
to楼上:
给合法定义的指针赋任何值都不会死掉,只有给指针指向的空间赋值才有可能访存违例。
所以是最后一句。
pomelowu 2005-10-13
  • 打赏
  • 举报
回复
且不管对0x00000000-0x0000ffff是禁止访问的
地址0x00000001并没有被提交为你分配的空间,而你试图对并不是你能合法控制的内存,也不是你有把握修改的内存进行操作,这本身也是危险的。
wxyeeis 2005-10-13
  • 打赏
  • 举报
回复
我怎么也觉得是 s.p[1] = 1; 会死掉啊
因为题目中s.p=p=&s.i
所以s.p[0]=*(s.p)=s.i
s.p[1]=*(s.p+4)=s.p
所以s.p[1] = 1才是非法地址赋值

好久没碰c++,有点不自信
pyzs2004 2005-10-13
  • 打赏
  • 举报
回复
在VC++6.0中調試到 s.p[1] = 1; 這步就會死掉。
jixingzhong 2005-10-13
  • 打赏
  • 举报
回复
呵呵 正解 ~
windows操作系统0x00000000-0x0000ffff是一段特殊内存, 禁止访问 ~
pyzs2004 2005-10-13
  • 打赏
  • 举报
回复
還是有點不明白。
kobefly 2005-10-13
  • 打赏
  • 举报
回复
做这个东西就是要细心啊,其实也没什么难的

对错误的地址赋值,会导致运行期error
应该是segement fault
wuming2003 2005-10-13
  • 打赏
  • 举报
回复
windows操作系统0x00000000-0x0000ffff是禁止访问的
AntonlioX 2005-10-13
  • 打赏
  • 举报
回复
为什么 对地址0x00000001赋值非法
nonlyli 2005-10-13
  • 打赏
  • 举报
回复
哦。int型跟指针类型是一样长的。

——这句话对吗?先前我以为指针类型会比int更长一些。

终于看懂了。
Tiller2008 2005-10-13
  • 打赏
  • 举报
回复
mark...
xuanwenchao 2005-10-13
  • 打赏
  • 举报
回复
学习!
加载更多回复(4)

69,368

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧