函数名的实质就是函数的首地址
(1)函数名在c语言中的理解方法和变量名其实没区别。编译器会把这个函数的函数体对应的代码
段和这个函数的函数名(实质是符号)对应起来,等我们在使用这个函数名符号时,编译器会将
函数的函数体实际上做替换。因为函数体都不止4字节,而函数名这个符号只能对应1个地址,所
以实际对应的是函数体那一个代码段的首地址。
(2)拿c语言中的语法来讲,函数名就是这个函数的函数指针。
当我们在函数里面想要跳转到某一个地址运行时,可以直接用一个函数类型强转地址运行,即可以跳转到该地址运行。
1.首先来认识一个新的数据类型,如:void (*)(void)是一个指向函数的指针,且这个函数无返回值,无参数。
2.然后给他外层加个括号,如:(void (*)(void))
3.接着把0x100000强制转化为一个函数指针,即:(void(*)(void))0x100000
4.最后就是调用这个函数
((void) (*)(void))0x10000000();//可以到地址为0x100000处去执行