论坛首页 招聘求职论坛

神奇的面试题, 好玩的很。有能力的看看

浏览 13041 次
精华帖 (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;
}
不修改源码的基础上如何做到!
  • 大小: 42.8 KB
   发表时间:2011-12-07  
C···你高端了
0 请登录后投票
   发表时间:2011-12-07  
sswwww 写道
C···你高端了


   大爷啊。用C就高端了。。。?
0 请登录后投票
   发表时间:2011-12-07  
高科技看不懂
0 请登录后投票
   发表时间:2011-12-07  
xieye 写道
高科技看不懂

   就是修改  i 的值。
0 请登录后投票
   发表时间:2011-12-07  
改的是k的值吧

第15行换成下面的试试
printf("i=%d",i);
0 请登录后投票
   发表时间:2011-12-07  
kimmking 写道
改的是k的值吧

第15行换成下面的试试
printf("i=%d",i);


目的是要改变的是i的值, k是i的地址
0 请登录后投票
   发表时间:2011-12-07  
const的值确实能改,不过不太明白什么叫“不改变源码的情况下如何做到?”
0 请登录后投票
   发表时间:2011-12-07   最后修改:2011-12-07
刚测试了下,const的值确实改了,但是用的时候仍然是原来的值。。。估计const类型在编译后会将值存放在其他位置进行使用,C估计是解决不了这个问题了
k和i的地址完全相同,但是打印出来的结果却不一样。
0 请登录后投票
   发表时间:2011-12-07  
巧克力饼干 写道
const的值确实能改,不过不太明白什么叫“不改变源码的情况下如何做到?”

就是不能修改上面的代码
0 请登录后投票
论坛首页 招聘求职版

跳转论坛:
Global site tag (gtag.js) - Google Analytics