函数指针与指针函数,将直接写入内存的操作码转成函数指针并调用
函数指针与指针函数 阅读hotspot的代码,需要先弄清楚这两个很容易混淆的概念。 最近我想到一个办法去区分折扣两个,就是在中间加个“的”: 函数的 指针 指针的 函数 这样就很容易区分了。 函数指针,实际上是指针,是指向函数的指针 指针函数,实际上函数,是指返回指针的函数 其实在C语言中,指针数组和数组指针也是一样的区分办法。 加个“的”便可以解决。 为什么会有这样的问题?老外怎么理解这个事情?我得回去翻翻K&R的那本C的英文教材。TODO。 指针函数 是指返回指针的函数,比如: int *fun (int a, int b) { int c = a + b; return &c; // 返回一个指针 } 函数指针 是指指向函数的指针 #include <stdio.h> int (* fun)(int a, int b); // fun 就是指向函数的指针变量 int add (int a, int b) { int c = a + b; return c; } int main(){ fun = add; int result = fun(100, 200); printf("result=%d\n", result); } 函数指针定义成类型 还可以结合类型声明将函数指针定义成类型 #include <stdio.h> // 定义一个 返回值是int