Chinaunix首页 | 论坛 | 博客
  • 博客访问: 89483
  • 博文数量: 33
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 170
  • 用 户 组: 普通用户
  • 注册时间: 2015-09-21 16:23
文章分类

全部博文(33)

文章存档

2016年(5)

2015年(29)

我的朋友

分类: C/C++

2015-11-29 18:54:53

首先明确:函数的函数名实际上就是一个指针,其指向该函数的代码在内存中的首地址

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

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 }

typedef自定义函数类型:
#include
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 }



阅读(1088) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~