typedef void(*Fun)(void);

函数类似于数组,函数名就是它的首地址;


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

int i;             // 定义了一个int类型的变量i; 而这样

typedef INT int;   // 表示用户自己定义了一个整型数据类型INT,实际上就等同于int 所以:INT ii;

                   // 表示定义了一个int类型的变量ii;  

void (*pFn)(void)  // 定义了一个函数指针,该函数指针指向类似于void Foo(void)函数的函数入口地址 

typedef void (*Fun)(void

                   // 表示用户自己定义了一个函数指针数据类型 

Fun pf;            // 表示定义了一个函数指针pf,改函数指针指向类似于void   *pf(void)的函数  //leo 

char *a="This is ";// 这个在常量区分配一个空间,然后a指向此空间

char a[] = "This is";

                   // 这个在常量区分配一个空间,然后又在栈上分配一个空间,将常量区的内容复制过来,所以可以修改

/* //////////定义一个函数指针类型/////////// */

//比如你有三个函数:

void hello(void) { printf("你好!"); }

void bye(void) { printf("再见!"); }

void ok(void) { printf("好的!"); }

typdef void (*funcptr)(void);

                   // 这样就构造了一个通用的函数;你用的时候可以这样:

void speak(int id)

{

   funcptr words[3] = {&hello, &bye, &ok};

   funcptr fun = words[id];

   (*fun)();

}

这样的话,如果speak(0)就会显示“你好!”

speak(1)就会显示“再见!”

speak(2)就会显示“好的!”

用于处理参数和返回值的形式都一样,但是功能不确定的一组函数,可以使用函数指针

比如算术运算符,加、减、乘、除,都可以用typedef int (*calc)(int,int)代表,等等

时间: 2024-10-14 05:39:39

typedef void(*Fun)(void);的相关文章

typedef void (*funcptr)(void)

定义一个函数指针类型.比如你有三个函数:void hello(void) { printf("你好!"); }void bye(void) { printf("再见!"); }void ok(void) { printf("好的!"); } typdef void (*funcptr)(void);这样就构造了一个通用的函数你用的时候可以这样:void speak(int id){ funcptr words[3] = {&hello,

typedef int (*ONMENU) (void) 的理解

typedef int (*ONMENU) (void) ——这就是一个取别名的过程. 通常情况下,我们会使用:typedef int  myint; myint a; 这里myint和int是一样的. 而对于函数的申明我们通常会这样申明:int Function() (void);此时表示申明了一个函数名为Function的函数, 函数没有任何的形参,返回值类型为int型. 而对于 typedef int(*NOMENU) (void);就是对一个 int (void)类型的函数类型进行取指针

关于typedef void (*funcptr)(void)问题

一.看了一下H.264硬解代码,发现有类似这种方式的定义: typedef void (*exec_ref_pic_marking_adaptive_mmco_func)( GstVaapiDecoderH264  *decoder, GstVaapiPictureH264  *picture, GstH264RefPicMarking *ref_pic_marking ); static const exec_ref_pic_marking_adaptive_mmco_func mmco_fu

typedef void (*funcptr)(void) typedef void (*PFV)(); typedef int32_t (*PFI)();

看到以下代码,不明白查了一下: /** Pointer to Function returning Void (any number of parameters) */ typedef void (*PFV)(); /** Pointer to Function returning int32_t (any number of parameters) */ typedef int32_t (*PFI)(); 定义一个函数指针类型.比如你有三个函数: void hello(void) { prin

typedef void (*funcptr)(void)的含义

fun a;//等价于void (*a)(); 这样声明起来就方便多了 void (*a)();表示a是个指针,指向一个不带参数.返回值为空的函数 定义一个函数指针类型. 比如你有三个函数: void hello(void) { printf("你好!"); } void bye(void) { printf("再见!"); } void ok(void) { printf("好的!"); } typdef void (*funcptr)(voi

typedef int(init_fnc_t) (void)的理解

typedef int(init_fnc_t) (void); 这个就是一个取别名的过程. 我们通常情况下会如下使用 typedef :typedef int MyInt;MyInt a; 这个时候我们的MyInt 就和int是一样的意思. 而对于函数的申明我们通常会这样申明:int InitFunction(void);此时表示申明了一个函数名为InitFunction的函数, 函数没有任何的形参,返回值类型为int型. 而对于 typedef int(init_fnc_t) (void);就

SGI STL 函数static void (* set_malloc_handler(void (*f)()))()与函数指针解析

在C++ STL的SGI实现版本中,一级空间配置器class __malloc_alloc_template中有一个静态函数的实现如下: static void (*set_malloc_handler(void (*f)()))() { void (*old)() = __malloc_alloc_oom_handler; __malloc_alloc_oom_handler = f; return (old); } 没接触过函数指针的人看到这段代码可能会很头疼,不知道这个函数表达什么意思.

void及void指针类型

1.概述 许多初学者对C/C++语言中的void及void指针类型不甚理解,因此在使用上出现了一些错误.本文将对void关键字的深刻含义进行解说,并 详述void及void指针类型的使用方法与技巧. 2.void的含义 void的字面意思是“无类型”,void *则为“无类型指针”,void *可以指向任何类型的数据. void几乎只有“注释”和限制程序的作用,因为从来没有人会定义一个void变量,让我们试着来定义: void a; 这行语句编译时会出错,提示“illegal use of ty

void和void*指针的一些理解

void 和 void* 指针分别表示无类型和无类型指针. void 的作用是限制: 1,函数无返回值. 2,函数无参数. 当函数的返还值无参数的时候一定要加上 void ,因为在缺省的状态下函数的返还值是 int ,并且如果不需要的时候就一定要将他声明成 void 类型这样看着更明显.当函数无参数的时候在声明的时候也要加上 void 的这也是一个好习惯,增强了可读性,当然在 K&R C 中是允许在声明的时候省去参数的. void 类型的和指针可以接受任何类型的类型的指针的赋值(但是不代表这个v