函数指针的定义和举例
时间: 2024-03-16 21:39:12 浏览: 118
函数指针是指向函数的指针变量。它可以用来存储函数的地址,从而可以通过指针调用函数。函数指针的定义方式如下:
```c++
返回值类型 (*指针变量名)(参数列表)
```
其中,返回值类型是函数的返回值类型,指针变量名是函数指针的名称,参数列表是函数的参数类型和个数。
下面是一个函数指针的示例:
```c++
#include <iostream>
void sayHello() {
std::cout << "Hello, World!" << std::endl;
}
int main() {
void (*funcPtr)() = sayHello; // 定义一个函数指针,并将其指向sayHello函数
funcPtr(); // 通过函数指针调用sayHello函数
return 0;
}
```
在上面的示例中,我们定义了一个无返回值、无参数的函数`sayHello`,然后定义了一个函数指针`funcPtr`,并将其指向`sayHello`函数。最后通过函数指针调用`sayHello`函数,输出"Hello, World!"。
相关问题
指针函数,函数指针举例
### 函数指针与指针函数的区别及使用示例
#### 1. 基本概念
函数指针和指针函数是 C++ 中两种不同的概念,尽管它们的名称相似,但其含义和用途完全不同。
- **函数指针**:函数指针是一个指向函数的指针变量。它存储了函数的入口地址,允许通过该指针调用对应的函数[^2]。
- **指针函数**:指针函数是指返回值类型为指针的函数。它的作用是返回一个指针类型的值[^2]。
#### 2. 声明与定义
以下是函数指针和指针函数的声明方式:
- **函数指针的声明**:
```cpp
returnType (*functionPointerName)(parameterTypes);
```
例如:
```cpp
int (*add)(int, int); // 声明一个指向返回 int 类型且接受两个 int 参数的函数指针
```
- **指针函数的声明**:
```cpp
returnType* functionName(parameterTypes);
```
例如:
```cpp
int* max(int*, int*); // 声明一个返回 int 指针的函数
```
#### 3. 使用示例
##### 3.1 函数指针的使用
函数指针可以用于动态选择函数、回调机制等场景。以下是一个简单的例子,展示如何使用函数指针调用函数:
```cpp
#include <iostream>
using namespace std;
// 定义两个函数
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int main() {
// 声明函数指针并初始化
int (*operation)(int, int) = nullptr;
// 根据条件选择不同的函数
if (true) {
operation = add;
} else {
operation = subtract;
}
// 调用函数指针指向的函数
cout << "Result: " << operation(5, 3) << endl; // 输出 8 或 2
return 0;
}
```
##### 3.2 指针函数的使用
指针函数通常用于返回动态分配的内存地址。以下是一个示例,展示如何使用指针函数返回一个动态分配的整数数组:
```cpp
#include <iostream>
using namespace std;
// 定义一个指针函数
int* createArray(int size) {
int* arr = new int[size];
for (int i = 0; i < size; ++i) {
arr[i] = i * 2;
}
return arr;
}
int main() {
int size = 5;
int* arr = createArray(size);
// 输出数组内容
for (int i = 0; i < size; ++i) {
cout << arr[i] << " ";
}
cout << endl;
// 释放内存
delete[] arr;
return 0;
}
```
#### 4. 区别总结
| 特性 | 函数指针 | 指针函数 |
|-----------------|------------------------------------|----------------------------------|
| 定义 | 是一个指向函数的指针 | 是一个返回指针类型的函数 |
| 语法 | `returnType (*name)(parameters)` | `returnType* name(parameters)` |
| 用途 | 动态选择函数、回调机制 | 返回动态分配的内存地址 |
####
C语言定义一个函数,该函数的参数是函数指针和数组,同时函数指针的参数也是函数指针和数组,举例说明
C语言中可以定义一个函数,该函数的参数是函数指针和数组,同时函数指针的参数也是函数指针和数组。下面是一个示例:
```c
#include <stdio.h>
// 定义一个函数指针类型
typedef void (*FuncPtr)(int);
// 定义一个函数,参数是函数指针和数组
void func(FuncPtr ptr, int arr[], int size) {
for (int i = 0; i < size; i++) {
ptr(arr[i]);
}
}
// 定义一个函数,参数是函数指针和数组
void printNum(int num) {
printf("%d ", num);
}
int main() {
int arr[] = {1, 2, 3, 4, 5};
int size = sizeof(arr) / sizeof(arr[0]);
// 调用函数,传入函数指针和数组
func(printNum, arr, size);
return 0;
}
```
在上面的示例中,我们首先定义了一个函数指针类型`FuncPtr`,然后定义了一个函数`func`,该函数的参数是函数指针`ptr`、数组`arr`和数组的大小`size`。在`func`函数中,我们通过循环遍历数组,并通过函数指针`ptr`调用传入的函数。最后,在`main`函数中,我们定义了一个整型数组`arr`,并计算出数组的大小,然后调用`func`函数,传入函数指针`printNum`和数组`arr`。
运行上述代码,输出结果为:
```
1 2 3 4 5
```
阅读全文
相关推荐













