您的位置:首页 > 其它

typedef 定义函数类型()转

2015-12-11 14:45 260 查看
最近在看posix实时信号时,遇到一处函数是如此定义的:

1
typedef
void
sigfunc_rt(
int
,
siginfo_t *,
void
*);
在我常规理解里,一般定义一个函数类型都是这样定义的:

1
typedef
void
(*sighandler_t)(
int
);
2
sighandler_t
signal
(
int
signum,
sighandler_thandler);
其实是这样的,对于函数,typedef有两类自定义类型:

首先我们要先明白一个概念,函数名是不是指针?也就是说一个函数名可不可以代表一个地址?以及什么是函数类型?

经过查找,函数名就是一个指针,但是意义是不一样的,如同于数组a[],a和&a其实都是一样的。当调用一个函数时,我们都是直接用函数名调用,或者说通过指针调用。

函数类型,在我理解,就是定义了一个函数应该返回什么样的类型,int?void?以及它的参数形式。

那么:

1,tpyedef自定义函数指针类型:

看一个例子:

01
#include
<stdio.h>
02
03
typedef
int
(*fp_t)(
char
c);
04
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;}
07
08
int
main()
09
{
10
int
ret;
11
fp_t
fp;
//fp是一个指向一个函数类型(返回的是int,参数是char)的函数指针
12
13
fp
= f0;
14
ret
= fp(
'a'
);通过函数指针调用函数
15
16
fp
= f1;
17
ret
= fp(
'x'
);
18
return
0;
19
}
2,typedef自定义函数类型:

例子:

view
source

print?

01
#include
<stdio.h>
02
03
typedef
int
f_t(
char
c);
04
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;}
07
08
int
main()
09
{
10
int
ret;
11
f_t
*fp;
//f_t是函数类型,所以fp是指向此函数类型的指针
12
13
fp
= f0;
14
ret
= fp(
'a'
);
15
16
fp
= f1;
17
ret
= fp(
'x'
);
//函数指针调用此函数
18
return
0;
19
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: