函数指针是什么?如何使用函数指针?
时间: 2023-12-22 19:30:11 浏览: 32
函数指针是指向函数的指针变量。它可以存储函数的地址,并且可以通过该指针调用函数。函数指针的类型与函数的返回值类型和参数类型相匹配。
使用函数指针的步骤如下:
1. 声明函数指针变量,指定函数的返回值类型和参数类型。
2. 将函数的地址赋值给函数指针变量。
3. 通过函数指针变量调用函数。
以下是一个使用函数指针的示例:
```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 (*func_ptr)(int, int); // 声明函数指针变量
func_ptr = add; // 将add函数的地址赋值给函数指针变量
printf("Addition: %d\n", func_ptr(5, 3)); // 通过函数指针调用add函数
func_ptr = subtract; // 将subtract函数的地址赋值给函数指针变量
printf("Subtraction: %d\n", func_ptr(5, 3)); // 通过函数指针调用subtract函数
return 0;
}
```
输出结果:
```
Addition: 8
Subtraction: 2
```
相关问题
函数指针是什么?如何声明和使用函数指针?
函数指针是指向函数的指针变量。与指向整型、字符型等变量的指针变量类似,指向函数的指针变量存放的是函数的首地址,通过它可以找到函数在内存中的代码区,并且可以调用该函数。
函数指针的声明格式为:返回值类型 (*指针变量名)(参数列表)。其中,指针变量名是指向函数的指针变量的名称,参数列表是函数的参数类型和参数名称,返回值类型是函数返回值的类型。
函数指针的使用分为两个步骤:声明和调用。声明时需要指定函数指针的类型,即返回值类型和参数列表。调用时需要使用函数指针变量名加上参数列表来调用函数。
以下是一个函数指针的例子:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int main() {
int (*p)(int, int); // 声明一个指向函数的指针变量
p = add; // 将函数add的地址赋给指针变量p
int result = (*p)(1, 2); // 调用函数add
printf("%d\n", result); // 输出:3
return 0;
}
```
什么是函数指针?如何使用函数指针?
函数指针是指向函数的指针变量。它可以用来调用函数或作为函数的参数。在C语言中,每个函数都有一个入口地址,函数指针就是指向这个地址的指针变量。通过函数指针,我们可以动态地选择要调用的函数。
使用函数指针的步骤如下:
1. 定义函数指针变量:使用函数指针类型来声明一个指针变量,该指针变量可以指向特定类型的函数。
2. 将函数地址赋给函数指针:将函数的地址赋给函数指针变量,可以使用函数名来获取函数的地址。
3. 通过函数指针调用函数:使用函数指针变量来调用函数,可以像调用普通函数一样使用函数指针来执行函数。
下面是一个示例代码,演示了如何定义和使用函数指针:
```c
#include <stdio.h>
// 声明一个函数指针类型
typedef int (*FuncPtr)(int, int);
// 定义两个函数
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int main() {
// 声明一个函数指针变量
FuncPtr fun;
// 将函数地址赋给函数指针
fun = add;
// 通过函数指针调用函数
int result = fun(2, 1);
printf("Result: %d\n", result); // 输出:3
// 将函数地址赋给函数指针
fun = sub;
// 通过函数指针调用函数
result = fun(2, 1);
printf("Result: %d\n", result); // 输出:1
return 0;
}
```