在IAP的bootloader中经常使用到地址跳转,指定程序跳转到某一地址运行,例如强制跳转到0x2c去执行,则可使用(*((void (*)(void))0x2c)))();
实际上这是运用的函数指针,可以这样分解:
1,函数指针的定义为 void (* fd) (void); 省略参数的函数原型为
void (*)(void).
2, 0x2c, 这里的0x2c为地址,可以认为是变量(个人理解), 可以理解为将变量0x2c进行强制类型转换,转换成函数指针类型,即(void(*)(void))0x2c.
3,调用函数。 (* (func) ) (); func 为函数指针(void(*)(void) )0x2c, 合起来就是 (* ( (void(*)(void) )0x2c) )();