1. typedef有点类似于#define宏,用来定义一个同义的新的类型。用typedef来定义函数指针形式如下:
typdef int (*pFunc)(int, int);
如果我们有一个函数:
int Add(int a, int b)
{
return a +b;
}
那么我们可以这样用:
pFunc pf;
pf = Add;
int n = pf(3, 4);
如意对于上面的定义可以这样理解:去掉typedef就形如正常的定义。同样的方式我们可以定义指针类型:
typedef int *p;
这样就可以用p来定义一个int型的指针类型了。
2. 一个复杂点的例子:
typedef int (*pFunc)(int, int);
pFunc function1(char op);
// 上面的定义等同下面的定义:
// int (*function1(char op))(int, int);
// 以下代码演示函数指针的用法
int add(int a, int b)
{
return a + b;
}
int (*function2(char op))(int, int)
{
return function1(op);
}
pFunc function1(char op)
{
switch (op) {
case '+': return add;
default: return NULL;
}
return NULL;
}
int calc_func(int a, int b, char op)
{
pFunc fp = function1(op);
return fp(a, b);
}
// 计算a、b的和
int a = 100, b = 200;
int c = calc_func(a, b, '+');
可以得到c的值是300
分享到:
相关推荐
为了简化函数指针的定义和使用,可以采用`typedef`关键字来创建函数指针类型别名。例如: ```cpp typedef int(*fp)(int); fp fpi; fpi = test; ``` 这样,`fpi`就成为了一个指向接受整型参数并返回整型值的函数的...
3. **typedef简化函数指针**:为了简化函数指针的使用,可以使用`typedef`创建一个别名,使得声明和使用函数指针更加直观。例如,我们可以定义一个类型`FP`,它代表了某个特定签名的函数指针,然后用这个别名来声明...
本文将详细介绍函数指针和函数对象的定义、类型、使用方法和区别。 一、函数指针 函数指针是指向函数的指针变量,可以指向全局函数或类成员函数。函数指针的类型是指针类型,例如`typedef void (*fp)(int);`,其中...
为了简化函数指针类型的定义,可以使用`typedef`来创建一个新的类型名。例如: ```c typedef void (*FP)(); // 创建了一个新的类型名FP,表示指向无参无返回值函数的指针类型 FP fp3 = f1; // fp3与前面定义的fp...
1. 定义函数指针类型。 2. 定义包含函数指针的数组,通常是在全局作用域。 3. 在数组中填充函数的地址。 4. 在运行时通过数组索引来调用相应的函数。 以下是一个简单的函数指针查表示例: ```c #include // 定义...
在C++中定义函数指针的一般形式如下: ```cpp 返回类型 (*指针名)(参数列表); ``` 例如,如果我们有一个返回`int`类型的无参函数,那么我们可以这样定义它的指针: ```cpp int (*funcPtr)(); ``` #### 函数数组...
定义函数指针的关键在于其类型必须与所指向的函数签名完全匹配,包括返回类型和参数列表。例如,一个接受两个整数并返回整数的函数指针可以这样定义: ```c int (*func_ptr)(int, int); ``` 然后,我们讨论`extern...
例如,在设计算法库时,我们可以定义一系列函数,每个函数代表一种特定的排序算法,然后使用函数指针选择在运行时执行哪个算法。这允许我们根据输入数据的特性或用户需求动态选择最合适的排序方法。 在实际应用中,...
定义函数指针的基本形式为: 类型名 (*指针变量名)(参数类型1, 参数类型2, ...); 这里“类型名”指的是函数的返回类型,而括号中的参数类型列表需要与被指向函数的参数类型完全一致。 举例来说,int (*pf)(int, ...
首先,我们需要了解类函数指针的基本用法。与普通函数指针不同,类函数指针需要指定所属的类,因为成员函数有其特定的“this”指针,指向调用该函数的对象。在C++中,我们可以通过typedef或者std::function来声明类...
本文将详细介绍函数指针的基本概念、定义方式、使用方法及其在实际编程中的应用场景。 #### 二、基本概念 ##### 1. 定义与理解 函数也是一种特殊的“对象”,它有自己的地址。函数指针就是用来存储这些地址的一种...
在C语言中,每个函数都有一个唯一的地址,我们可以通过定义函数指针类型来引用这个地址。例如,如果你有一个接受两个整数并返回整数的函数,你可以这样定义一个函数指针: ```c int add(int a, int b); typedef int...
(3)当特定的事件或条件发生的时候,调用者使用函数指针调用回调函数对事件进行处理。 使用回调函数的原因是可以把调用者与被调用者分开。调用者不关心谁是被调用者,所有它需知道的,只是存在一个具有某种特定...
定义函数指针数组有标准方法和非标准的“蒙骗法”。标准方法是首先声明这是一个数组,然后指定数组元素是函数指针类型。例如,可以定义一个数组 `FunArray`,其中每个元素都是 `FunType` 类型的函数指针。通过这种...
本文详细介绍了函数指针的三种主要用法:指向普通函数的指针、函数指针数组以及指向函数指针数组的指针。同时,还简单提及了在C++中函数指针与类成员的关联。 1. 指向普通函数的指针: 在C++中,函数指针的定义...
使用typedef可以简化函数指针的声明,比如定义一个类型为`FP`的别名: ```cpp typedef void (*FP)(char* s); ``` 这样,我们可以更简洁地声明和使用函数指针: ```cpp FP fp; fp = Invoke; fp("Hello World!\n");...
本文将深入探讨`typedef`的使用方法,以及它如何与函数指针相结合。 首先,`typedef`的基本用法是定义类型别名。例如,我们可以为整型定义一个新的名字`int32_t`: ```c typedef int int32_t; ``` 这样,当我们...
本文将详细介绍函数指针的概念、定义、使用方法以及实际应用中的技巧。 #### 函数指针的概念 在C/C++中,每个函数都有一个固定的内存地址,这使得我们可以创建一种特殊的指针——函数指针,来指向这些地址。函数...
本文详细介绍了函数指针在C++中的应用和使用,包括基本概念、函数指针数组以及指向函数指针数组的指针,并简要提及了函数指针与类成员的关联。 1. **基本的函数指针** 在C++中,函数可以被视为一等公民,它们可以...
对于函数指针类型,`typedef`同样能够简化定义和使用。 **示例:** ```c typedef int (*PF)(const char *, const char *); // PF类型定义 ``` 这里的`PF`代表了一个函数指针类型,该函数接受两个`const char *`...