函数指针对于作者这样的一个初学者来讲一直是一个生僻的概念,虽然在平时的编码中不常用,但是也不能不知道。
我们在如果在程序中写了一个函数,那么在点击编译的时候,系统就会为这个函数分配一个空间去存储这个函数,而这个空间的首地址,就是这个函数的首地址,函数指针指向的也就是这个首地址,以下面的函数指针为例
int(*p)(int ,int ) // 声明一个函数指针
int Func(int ,int) // 声明一个函数
p = Func; // 将这个函数的首地址赋给指针变量
其中,前面的 int 就表示这个函数的返回值是一个 int 类型的返回值,而后面货号里面的两个 int 表示这个函数的输入形参,说明这个函数有两个 int 类型的输入参数。
下面我们看一下函数指针在代码中的应用
#include<stdio.h>
#include<stdlib.h>
int Func(int x, int y){ // 定义一个函数
return x + y;
}
int main(){
int(*p)(int ,int); //声明函数指针
int num1 = 3;
int num2 = 5;
int result;
p = Func; //在用函数指针的时候,函数名后面不带括号
result = Func(num1, num2);
printf("result = %d\n", result);
system("pause");
return 0;
}
根据上面的加法函数,函数指针的用法一目了然,在使用函数指针的时候注意:
(1)在将函数的首地址赋给指针变量时,函数后面不用带括号
(2)函数指针的用法并不支持指针的 ++ 、-- 操作
以上是作者在阅读资料的基础之上的一些浅薄理解,写的不好的地方请指正。