返回列表 发帖

[我爱C语言] 一步一步解决C语言难点---来看一个函数声明。

形式1:void (*signal(int signum,void(* handler)(int)))(int);
这是信号函数的声明。
或者是形式2:
typedef void (*sig_t)(int);
sig_t   signal(int signum, sig_t handler);

形式1与形式2是等价的,为什么能等价?下面从typedef 讲起:

用typedef 定义一个数组:
typedef  int array[10];
array b;就相当于 int b[10];就是用b去代替"int array[10];"中的array。

用typedef 定义一个指针:
typedef  int *p;
p  px;就相当于 int *px 就是用px去代替" int *p;"中的p。

于是
typedef void (*sig_t)(int);
就是定义一个指针 "变量", sig_t就是一个指向函数的指针,一个指向 带1个参数返回值为空的函数 的指针。
当使用typedef声明后,sig_t就成了一个函数指针“类型”。

把形式1简化一下就是:
void (*signal(参数1,参数2)   )(int); //其中参数2是一个函数指针。
以下省略几十个字。
。。。 。。。
你那么NB,百度咋搜索不到你呢?

返回列表