指针变量出了可以指向普通的 int变量,float 变量和数组外,还可以指向函数的入口。
用函数指针变量调用函数
定义函数后,C 语言允许定义一个指针变量来指向该函数。
使用函数指针的步骤:
1. 定义函数指针变量。语法格式个为:函数返回值类型(*指针变量名)();
2. 将任何已有的函数入口赋值给函数指针变量。如:pt=avg;
关于上面句子的2点说明:
- C 语言允许任何已有的函数赋值给函数指针变量。所以,同一个函数指针变量在不同时间可指向不同的函数。
- 为函数指针变量赋值时,只需给出函数名即可,无需使用(),也无需传入参数。注意:是将函数入口赋给指针变量,而不是调用函数后将返回的结果赋给函数指针变量。
3. 使用函数指针变量来调用函数。语法格式为:(*函数指针变量)(参数);
示例代码:
#import <Foundation/Foundation.h>
int max(int* data , int len)
{
int max = *data;
// 采用指针遍历data数组的元素
for(int* p = data ; p < data + len ; p++)
{
// 保证max始终存储较大的值
if(*p > max)
{
max = *p;
}
}
return max;
}
int avg(int* data , int len)
{
int sum = 0;
// 采用指针遍历data数组的元素
for(int* p = data ; p < data + len ; p++)
{
// 累加所有数组元素的值
sum += *p;
}
return sum