社区
C语言
帖子详情
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
打赏
收藏
MS 笔试题
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
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用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)
MS interview question 微软
笔试题
MS interview question 微软
笔试题
,以前在微软里面搜集到的
IT面试
笔试题
集锦
IT面试
笔试题
集锦,包括华为,MS等各大名企业,主要语言为c,c++,java...
MS SQLSERVER面试题
以前公司用过的一份面试题,共享一下,有用的参考一下
中兴
笔试题
中兴公司
笔试题
,欢迎大家踊跃下载,祝大家顺利通过笔试
新星公司面试题
笔试题
写一段JDBC连MS SQL SERVER的程序,执行存储过程sp_getdata,参数varchar(20),返回一记录集。
C语言
69,368
社区成员
243,081
社区内容
发帖
与我相关
我的任务
C语言
C语言相关问题讨论
复制链接
扫一扫
分享
社区描述
C语言相关问题讨论
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章