3、完成对函数指针、指针函数的理解 int(*pfun)(int, int) 、 int *fun(int, int)
时间: 2023-08-16 22:10:26 浏览: 61
函数指针和指针函数是两个不同的概念。
1. `int(*pfun)(int, int)` 是一个函数指针,它声明了一个指向函数的指针变量 `pfun`。这个函数指针可以指向返回类型为 `int`,参数为两个 `int` 类型的函数。通过函数指针,可以动态地调用不同的函数。
例如,可以这样声明和使用一个函数指针:
```c
int add(int a, int b) {
return a + b;
}
int subtract(int a, int b) {
return a - b;
}
int (*pfun)(int, int); // 声明一个函数指针变量
pfun = add; // 将函数指针指向 add 函数
int result = (*pfun)(3, 2); // 通过函数指针调用 add 函数,返回结果为 5
```
在上面的例子中,`pfun` 是一个函数指针,可以通过 `(*pfun)` 来调用指向的函数。
2. `int *fun(int, int)` 是一个指针函数,它声明了一个返回类型为 `int*` 的函数 `fun`。这个函数返回一个指向 `int` 类型的指针。
例如,可以这样声明和使用一个指针函数:
```c
int a = 10, b = 5;
int* fun(int x, int y) {
int* result = (int*)malloc(sizeof(int)); // 分配内存空间
*result = x + y;
return result;
}
int* ptr = fun(a, b); // 调用指针函数,返回一个指向 int 类型的指针
int result = *ptr; // 通过指针访问返回的结果,result 的值为 15
free(ptr); // 释放动态分配的内存空间
```
在上面的例子中,`fun` 是一个指针函数,它返回一个指向 `int` 类型的指针,通过调用 `fun(a, b)` 可以获取一个动态分配的内存空间,并将计算结果存储在这个内存空间中。
总结起来,函数指针用于指向函数,并允许动态地调用不同的函数,而指针函数是一个返回指针类型的函数。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)