锁定老帖子 主题:神奇的面试题, 好玩的很。有能力的看看
精华帖 (0) :: 良好帖 (1) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2011-12-07
这个星期去应试某公司 : 其中某个题目是修改const定义的变量值 看图说话 源码如下: #include<windows.h> DWORD c; int const i =100; int main(int argc, char* argv[]) { char* k=(char*)&i; c=0x20; _asm { mov eax ,k mov ebx,c mov dword ptr [eax],ebx } printf("i=%d",*k); return 0; } 不修改源码的基础上如何做到! 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2011-12-07
C···你高端了
|
|
返回顶楼 | |
发表时间:2011-12-07
sswwww 写道 C···你高端了
大爷啊。用C就高端了。。。? |
|
返回顶楼 | |
发表时间:2011-12-07
高科技看不懂
|
|
返回顶楼 | |
发表时间:2011-12-07
xieye 写道 高科技看不懂
就是修改 i 的值。 |
|
返回顶楼 | |
发表时间:2011-12-07
改的是k的值吧
第15行换成下面的试试 printf("i=%d",i); |
|
返回顶楼 | |
发表时间:2011-12-07
kimmking 写道 改的是k的值吧
第15行换成下面的试试 printf("i=%d",i); 目的是要改变的是i的值, k是i的地址 |
|
返回顶楼 | |
发表时间:2011-12-07
const的值确实能改,不过不太明白什么叫“不改变源码的情况下如何做到?”
|
|
返回顶楼 | |
发表时间:2011-12-07
最后修改:2011-12-07
刚测试了下,const的值确实改了,但是用的时候仍然是原来的值。。。估计const类型在编译后会将值存放在其他位置进行使用,C估计是解决不了这个问题了
k和i的地址完全相同,但是打印出来的结果却不一样。 |
|
返回顶楼 | |
发表时间:2011-12-07
巧克力饼干 写道 const的值确实能改,不过不太明白什么叫“不改变源码的情况下如何做到?”
就是不能修改上面的代码 |
|
返回顶楼 | |