版本声明:本文转载于公众号TeachPlus
C语言面试题---指针篇(五)
与指针相关的考题,最后的一部份就是函数指针了,阅读下面这题:
要对绝对地址0x100000赋值,我们可以
用*((unsigned unsigned int*)0x100000) = 1234;
那么要是想让程序跳转到绝对地址是0x100000去执行,应该怎么做?
本题解析
这里必须要注意:有方法分配指定区域的内存,是给绝对地址赋值的前提条件。
纠结的是,C没有提供分配指定区域内存的方法。
答案: *((void (*)())0×100000) ();
首先要将 0×100000 强制转换成函数指针,即:(void (*)())0×100000;
然后再调用它:*((void (*)())0×100000)();