首先明确:函数的函数名实际上就是一个指针,其指向该函数的代码在内存中的首地址
typedef int
Myfunc (const char *,const struct stat,int)
函数的类型定义:表明
Myfunc是一个函数类型,那请问什么样的函数类型呢?-------这种函数类型为:它的参数为3个,返回值为int
(类比 typedef int XX,则XX的类型为int类型,然后可以用XX来定义变量或者指针的类型,如:定义变量a :XX a (等价于int a))
我们用Myfunc来定义变量或指针,其只不过是变量和指针的类型为函数类型。
static Myfunc myfunc 等价于 static int myfunc(const char *,const struct stat,int)
而:
Myfunc *func
表示func为指向Myfunc函数类型的指针(称为函数指针)
(再类比上面的XX类型,如:XX *ptr 等价于 int *ptr ,ptr为整型指针 )
网上的介绍:
tpyedef自定义函数指针类型:
看一个例子:
#include
03
|
typedef int (*fp_t)(char c);
|
05
|
int f0(char c) { printf("f0, c = %c\n", c); return 0;}
|
06
|
int f1(char c) { printf("f1, c = %c\n", c); return 1;}
|
11
|
fp_t fp;//fp是一个指向一个函数类型(返回的是int,参数是char)的函数指针
|
14
|
ret = fp('a');通过函数指针调用函数
|
typedef自定义函数类型:
#include
03
|
typedef int f_t(char c);
|
05
|
int f0(char c) { printf("f0, c = %c\n", c); return 0;}
|
06
|
int f1(char c) { printf("f1, c = %c\n", c); return 1;}
|
11
|
f_t *fp;//f_t是函数类型,所以fp是指向此函数类型的指针
|
17
|
ret = fp('x');//函数指针调用此函数
|
阅读(1088) | 评论(0) | 转发(0) |