给我一个函数指针的例子
时间: 2023-07-19 18:44:14 浏览: 61
好的,以下是一个函数指针的例子:
```c
#include <stdio.h>
void add(int a, int b) {
printf("%d + %d = %d\n", a, b, a + b);
}
void subtract(int a, int b) {
printf("%d - %d = %d\n", a, b, a - b);
}
void operate(int a, int b, void (*functionPtr)(int, int)) {
functionPtr(a, b);
}
int main() {
int a = 10, b = 5;
operate(a, b, add); // 调用add函数
operate(a, b, subtract); // 调用subtract函数
return 0;
}
```
在上述示例中,我们定义了两个函数add和subtract,它们都接受两个整数参数并打印出它们的和或差。我们还定义了一个函数operate,它接受两个整数参数和一个函数指针参数。在operate函数中,我们通过传递函数指针参数来调用add或subtract函数。最后在main函数中,我们通过调用operate函数来演示如何使用函数指针来调用不同的函数。
相关问题
函数指针与指针函数举个例子
下面分别举例说明函数指针和指针函数的用法。
1. 函数指针的例子:
```c
#include <stdio.h>
int add(int a, int b) {
return a + b;
}
int minus(int a, int b) {
return a - b;
}
int main() {
int (*p)(int, int); // 声明一个函数指针
int a = 10, b = 5;
p = add; // 指向 add 函数
printf("%d + %d = %d\n", a, b, p(a, b));
p = minus; // 指向 minus 函数
printf("%d - %d = %d\n", a, b, p(a, b));
return 0;
}
```
在这个例子中,我们定义了两个函数 add 和 minus,它们都接受两个 int 类型的参数,返回一个 int 类型的值。然后我们声明了一个函数指针 p,它可以指向任何接受两个 int 类型的参数,返回一个 int 类型的函数。在 main 函数中,我们将 p 分别指向 add 和 minus 函数,并使用 p 调用对应的函数,输出结果。
2. 指针函数的例子:
```c
#include <stdio.h>
#include <stdlib.h>
int* generate_array(int size) {
int* arr = (int*)malloc(size * sizeof(int)); // 动态分配内存
for (int i = 0; i < size; i++) {
arr[i] = i + 1;
}
return arr; // 返回指针类型
}
int main() {
int size = 5;
int* arr = generate_array(size); // 调用指针函数生成数组
for (int i = 0; i < size; i++) {
printf("%d ", arr[i]); // 输出数组
}
free(arr); // 释放内存
return 0;
}
```
在这个例子中,我们定义了一个指针函数 generate_array,它接受一个 int 类型的参数 size,返回一个 int 类型的指针。在 generate_array 函数中,我们通过 malloc 函数动态分配内存,生成一个长度为 size 的 int 数组,并将每个元素初始化为数组下标 + 1。最后,我们返回数组的指针。在 main 函数中,我们调用 generate_array 函数生成一个长度为 5 的数组,并输出数组的每个元素。最后,我们使用 free 函数释放数组的内存。
可以举一个函数指针的例子吗
可以,函数指针是指向函数的指针变量,可以通过函数指针调用函数。例如,以下代码定义了一个函数指针变量p,它指向一个返回整型、参数为两个整型的函数add:
int add(int a, int b){
return a + b;
}
int (*p)(int, int) = add;
通过p调用add函数可以这样写:
int result = (*p)(1, 2);
其中,(*p)表示调用p所指向的函数,即add函数。