本人在K&R手册上面看到了typedef的这样的用法
typedef int (*PFI)(char *, char *)
本人能理解他说的: PFI 是一个指向函数的指针,该指针具有两个char * 类型的参数
但是他还说 该函数的返回类型为 int 本人就不理解了
求高手能讲解
typedef int (*PFI)(char *, char *)
本人能理解他说的: PFI 是一个指向函数的指针,该指针具有两个char * 类型的参数
但是他还说 该函数的返回类型为 int 本人就不理解了
求高手能讲解
解决方案
10
那题主把PFI前面的int理解成什么?
5
int 是整个类型定义的一个局部
int (*PFI)(char *,char *);
为一个完整的函数指针定义, 指针为 PFI, 类型为 int (*)(char *,char *);
所以
typedef int (*PFI)(char *,char *);
定义PFI为 函数指针类 int (*)(char *,char *);
指向 返回值为 int,两个参数都是 char * 类型 的函数指针。
去掉 typedef 后,定义类型就变成定义对象,这里是函数指针
加回 typedef 这就变成定义类型了,对象名就变成类型名了(别名),
typedef类型。就是 去掉typedef 后,所定义的对象的类型。
int (*PFI)(char *,char *);
为一个完整的函数指针定义, 指针为 PFI, 类型为 int (*)(char *,char *);
所以
typedef int (*PFI)(char *,char *);
定义PFI为 函数指针类 int (*)(char *,char *);
指向 返回值为 int,两个参数都是 char * 类型 的函数指针。
去掉 typedef 后,定义类型就变成定义对象,这里是函数指针
加回 typedef 这就变成定义类型了,对象名就变成类型名了(别名),
typedef类型。就是 去掉typedef 后,所定义的对象的类型。
5
typedef int (*PFI)(char *, char *);
这是一个指针函数的声明,这个指针函数有两个形参,类型为char型指针,指针函数的返回值是int型
可以将任意符合上述行参和返回值的函数赋值给这个PFI。
5
一般一个带返回值的函数肯定是这样写的:
int func(char*, char*)
那么我们要定义这个函数的指针,下面的内容就好理解了。
typedef int (*PFI)(char *, char *); PFI fun; fun = func;