c++ 函数指针
时间: 2023-06-28 09:10:08 浏览: 69
C++ 中的函数指针是指向函数的指针变量,可以将函数指针作为参数传递给其他函数,也可以在函数内部使用它来调用函数。函数指针的声明方式如下:
```
返回值类型 (*函数指针变量名)(参数列表);
```
其中,`返回值类型`是指被指向函数的返回值类型,`函数指针变量名`是指函数指针的名称,`参数列表`是指被指向函数的参数列表。下面是一个例子:
```
#include <iostream>
using namespace std;
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
int (*p)(int, int);
p = add; // 指向 add 函数
cout << p(3, 4) << endl; // 输出 7
p = sub; // 指向 sub 函数
cout << p(3, 4) << endl; // 输出 -1
return 0;
}
```
在上面的例子中,`p` 是一个函数指针,它指向一个接受两个 `int` 类型参数并返回 `int` 类型值的函数。我们将 `p` 分别指向 `add` 和 `sub` 函数,并使用它调用这两个函数。
相关问题
c++函数指针的用法
C++函数指针是指向函数的指针变量,可以将函数指针作为参数传递给其他函数,也可以将函数指针作为返回值返回。以下是C++函数指针的用法示例:
1. 定义函数指针类型
```c++
typedef bool (*fp)(const string &, const string &);
```
2. 定义函数指针变量
```c++
bool compareLength(const string &s1, const string &s2) {
return s1.length() < s2.length();
}
fp fp1 = compareLength;
```
3. 将函数指针作为参数传递给其他函数
```c++
void sortStrings(vector<string> &vec, fp compare) {
sort(vec.begin(), vec.end(), compare);
}
vector<string> vec = {"hello", "world", "cpp", "function", "pointer"};
sortStrings(vec, fp1);
```
4. 将函数指针作为返回值返回
```c++
fp getCompareFunction(bool flag) {
if (flag) {
return compareLength;
} else {
return compareAlphabet;
}
}
fp fp2 = getCompareFunction(true);
```
C++ 函数指针定义
C++ 函数指针定义的语法如下:
返回类型 (*指针变量名)(参数列表);
其中,指针变量名可以自定义,参数列表可以为空。例如,定义一个指向返回类型为 int,参数列表为空的函数指针变量:
int (*p)();
这里的 p 就是一个函数指针变量,它可以指向返回类型为 int,参数列表为空的函数。