首先(void(*)(void) )是一个强制类型转换符,他将后面的值强制转化为一个函数指针,该函数指针所指向的函数入口参数为 void,返回值也是void 。 后面的内容(*(unsigned long *)0x2C)是取出0x2C地址处的值转换为无符号长整形。那么(void (*)(void))(*(unsigned long *)0x2C)就是将0x2C处的长整形的数值转换为函数指针,假设为 fp的话; 那么上面的表达式就可以简化为 (*fp)(); 将上面转化好的函数指针进行引用(也就是调用函数指针指向的函数)。
其中0x2C代表的含义,大家看附件的图就能明白。
[
本帖最后由 hansonhe 于 2012-2-23 23:05 编辑 ]