C++里指向函数的指针
时间: 2023-08-30 16:06:31 浏览: 51
在C++中,可以使用指向函数的指针来存储和调用函数。指向函数的指针变量可以像其他指针变量一样声明,只不过要在变量名前面加上一个括号对,括号里面是函数参数列表,例如:
```
int (*p)(int, int); // 声明一个指向参数为两个int型,返回值为int型的函数指针变量
```
上面的声明表示p是一个指向参数为两个int型,返回值为int型的函数的指针变量。可以把p指向一个符合要求的函数,例如:
```
int max(int a, int b) {
return a > b ? a : b;
}
p = max; // p指向max函数
```
然后可以通过指针变量p调用函数:
```
int result = (*p)(3, 5); // 调用函数max,并传入参数3和5
```
或者使用更简洁的语法:
```
int result = p(3, 5); // 直接通过指针变量调用函数max,并传入参数3和5
```
相关问题
c++里面指针函数 函数指针
在C语言中,指针函数是返回一个指针的函数。它的函数类型声明可以写作`ReturnType (*FunctionName)(ParameterTypes)`,其中`ReturnType`是返回类型,`FunctionName`是函数名,`ParameterTypes`是参数类型。
函数指针是指向函数的指针变量。它可以用来存储函数的地址并调用该函数。函数指针的声明可以写作`ReturnType (*PointerName)(ParameterTypes)`,其中`ReturnType`是函数的返回类型,`PointerName`是指针变量名,`ParameterTypes`是参数类型。
下面是一个简单的示例,演示了指针函数和函数指针的用法:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
// 声明一个指针函数
int (*pFunc)(int, int);
// 将指针指向add函数
pFunc = add;
// 调用指针函数
int result = pFunc(4, 2);
printf("Result of add: %d\n", result);
// 将指针指向subtract函数
pFunc = subtract;
// 调用指针函数
result = pFunc(4, 2);
printf("Result of subtract: %d\n", result);
return 0;
}
```
输出结果为:
```
Result of add: 6
Result of subtract: 2
```
在这个示例中,我们声明了一个指针函数`pFunc`,并将它先指向`add`函数,然后调用它来计算4和2的和。接着,我们将`pFunc`指向`subtract`函数,并再次调用它来计算4和2的差。
c++指向函数数组的指针
C++中可以定义指向函数数组的指针,其语法如下:
```cpp
返回类型 (*指针变量名[数组长度])(参数列表);
```
其中,指针变量名是指向函数数组的指针变量名,数组长度是函数数组的长度,返回类型是函数的返回类型,参数列表是函数的参数列表。
例如,定义一个指向函数数组的指针,该函数数组包含两个函数,每个函数都有一个int类型的参数,返回值为void:
```cpp
void func1(int);
void func2(int);
void (*pFunc[2])(int) = {func1, func2};
```
在上面的代码中,pFunc是一个指向函数数组的指针,它包含两个元素,每个元素都是一个指向函数的指针,这两个函数都有一个int类型的参数,返回值为void。