引言
在看redis原理的时候,看到链表结构中,用到了函数指针,想起了之前容易弄混的指针函数和函数指针,所以记录一下
函数指针和指针函数的区别
定义
- 函数指针是指向函数地址的指针,本质是一个指针
- 指针函数是返回类型是指针的函数,本质上是函数
如何区分
看星号是否被括号包含:被括号包含是函数指针,反之是指针函数。
函数指针示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include <stdio.h> int sum(int a, int b) { return a + b; } int mul(int a, int b) { return a * b; } int main() { int (*method_point) (int a, int b); method_point = ∑ printf("%p\n", method_point); printf("%d\n", method_point(3, 5)); method_point = &mul; printf("%p\n", method_point); printf("%d\n", method_point(3, 5)); return 0; }
|
执行结果:
1 2 3 4
| 0x102256eb0 8 0x102256ed0 15
|
指针函数示例
1 2 3 4 5 6 7 8 9 10 11 12 13 14
| #include <stdio.h> int *sum(int a, int b) { int c = a + b; return &c; } int main() { int* c = sum(3, 5); printf("%d\n", *c); return 0; }
|