函数调用中的黑客技术

//说明在问题描述之前:
 本问题在正常情况下没有特别的实用价值,但却是让你对函数调用过程有一个更深入了解的机会.

问题描述:
现给你一个函数原型为:void change(unsigned a); 
//注:此处的a即不是引用也非指针.
现要求,能在主函数中反应出此函数对a的值的改变.
即形如:
main()
{
  unsigned x = 10;
  change(x);
  cout<<x<<endl;//现要求x值在经过change()后有变化.如何办到?
}

说明:以往我们常通过传址传指针来达到此目的,现在有这么一个怪的函数,仍然要求有此效用,你会怎么办?

我们有两种方法可以达到此效果:
1) 在change()里寻找到main()里的x变量的实际地址,进而改变它.  问题的难点在于"寻址".
2) 利用C++的异常处理.(CSDN里某人提出的,理论上可行,没有验证)

关于此问题的源码,请动用你的脑筋思考,我将在不久公布我的一个实现版本.嘿嘿.

posted on 2007-11-10 00:44 zim.NET 阅读( ...) 评论( ...) 编辑 收藏

转载于:https://www.cnblogs.com/zimmerman/archive/2007/11/10/954827.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值