1. 概念
指向函数的指针,是一个函数在内存中的地址。
2. 表示方法
以一个加法函数add为例
int add(int x, int y)
{
return x + y;
}
&add是一个地址,那么&add应该存到哪里?
这里便可引入函数指针,可将其存放在函数指针pf中
int (*pf)(int, int) = &add;
解释:*pf 表示指针,(int ,int)表示函数有两个int型形参,int表示返回值是int型的。
与数组名就是首元素地址(两个特例除外)类似,函数名就是执行该函数功能的程序代码在内存中的起始地址。
因此也可以表示为int (*pf)(int, int) = add;
3. 使用方式
函数指针既可以作为实参传递给函数,也可以作为返回值从函数返回,还可以存入数组或者赋值给其他函数指针。
可以通过函数指针来调用函数,具体流程是:
(1)将函数地址存到函数指针中;
(2)函数指针解引用;
(3)调用函数。
同样以一个加法函数为例
int add(int x, int y)
{
return x + y;
}
int main()
{
int (*pf)(int, int) = add;
//以下两种写法效果一样,为了强调pf是函数指针,推荐第一种
printf("%d\n", (*pf)(4, 3));//计算3+4
printf("%d\n", pf(4, 3));
}
对一个指向函数的指针进行解引用,就是调用其指向的函数。调用一个函数时,可以将指向它的指针当成函数名直接使用。
本文详细介绍了函数指针的概念,包括它是函数内存地址的存储形式,以及如何通过地址赋值、作为参数传递、返回值和调用函数的方式使用。通过实例演示了函数指针的运用过程。
4234





