概述
之前并没有特别注意函数指针的概念,但其实我们平常编写代码的时候也经常会用到函数指针,因此网上收集了一些资料简单总结了一下,避免用得不明不白。
在Linux系统上创建线程会使用到以下函数
int pthread_create(pthread_t *thread, const pthread_attr_t *attr,
void *(*start_routine) (void *), void *arg);
其中第三个参数就是函数指针,新创建的线程将会执行start_routine函数。
什么是函数指针
如果在程序中定义了一个函数,那么在编译时系统就会为这个函数代码分配一段存储空间,这段存储空间的首地址称为这个函数的地址。而且函数名表示的就是这个地址。既然是地址我们就可以定义一个指针变量来存放,这个指针变量就叫作函数指针变量,简称函数指针。
定义方式
函数指针的定义方式为
函数返回值类型 (* 指针变量名) (函数参数列表);
例如
int(*p)(int, int);
示例
函数指针p指向返回值为int,有两个int类型参数的函数 ,简单示例如下。
#include <stdio.h>
int add(int a,int b){
return a+b;
}
void main()
{
int (*p)(int,int);
p=add;//或p=&add
int n=p(1,2);//或(*p)(1,2)
printf("%d\n",n);
}
输出3。
参考: