函数与指针
函数与指针
1、函数指针的本质
//函数指针的理解例子
#include <stdio.h> typedef int(FUNC)(int);//用typedef方式定义函数指针 int test(int i) { return i * i; } void f() { printf("Call f()...\n"); } int main() { FUNC* pt = test;//FuncType* pointer方式定义pt并指向test函数 void(*pf)() = &f;//type(*pointer)(parameter list)方式定义pf并指向f函数 pf();//执行test (*pf)(); printf("Function pointer call: %d\n", pt(2)); }
2、回调函数
//理解函数的栗子
#include <stdio.h> typedef int(*FUNCTION)(int);//通过typedef为函数类型重命名:typedef type name(parameter list) int g(int n, FUNCTION f) { int i = 0; int ret = 0; for(i=1; i<=n; i++) { ret += i*f(i); } return ret; } int f1(int x) { return x + 1; } int f2(int x) { return 2*x - 1; } int f3(int x) { return -x; } int main() { printf("x * f1(x): %d\n", g(3, f1));//调用函数作为参数传递给被调用函数 printf("x * f2(x): %d\n", g(3, f2)); printf("x * f3(x): %d\n", g(3, f3)); }
3、右左法则
小咸鱼的:https://blog.csdn.net/sinat_30071459/article/details/52894220
等等,平时用的少,很容易忘记,需要用的时候就网上查找。。。