函数指针的用法
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
函数指针的用法
函数指针是一种指向函数的指针变量,它可以用来间接调用函数。
在C语言中,函数指针通常用于回调函数、动态函数调用等领域。
以下是函数指针的用法:
1. 声明函数指针
函数指针的声明格式为:返回类型 (*指针变量名)(参数类型列表)。
例如,int (*p)(int, int) 表示 p 是一个指向返回类型为 int,参数类型为 int, int 的函数指针。
2. 定义函数指针
定义函数指针时,需要将其指向具体的函数。
例如:
int add(int a, int b) {
return a + b;
}
int (*p)(int, int) = add;
上述代码定义了一个指针变量 p,它指向函数 add。
这样,我们就可以通过 p 间接调用 add 函数,例如 p(1, 2)。
3. 函数指针作为参数
函数指针还可以作为函数的参数。
这种用法通常用于回调函数。
例如:
void forEach(int* arr, int length, int (*callback)(int)) {
for (int i = 0; i < length; i++) {
arr[i] = callback(arr[i]);
}
}
上述代码定义了一个函数 forEach,它接受一个 int 类型的数组和一个函数指针 callback,用于对数组中的每个元素进行操作。
其中,callback 函数的返回值是 int。
这样,我们就可以通过forEach 函数调用不同的 callback 函数,实现不同的操作。
4. 函数指针数组
函数指针还可以放在数组中,形成函数指针数组。
例如:
int add(int a, int b) {
return a + b;
}
int sub(int a, int b) {
return a - b;
}
int (*funcs[2])(int, int) = {add, sub};
上述代码定义了一个名为 funcs 的函数指针数组,它包含两个元素,分别指向 add 函数和 sub 函数。
这样,我们就可以通过调用funcs[0](1, 2) 和 funcs[1](1, 2) 实现不同的计算。
总之,函数指针是一种强大的工具,可以使程序更加灵活和可扩展。
但是,在使用函数指针时,需要注意函数的返回值和参数类型,以免出现类型不匹配的错误。