1.定义函数地址
如果在程序中定义了一个函数,在编译时,编译系统为函数代码分配一段存储空间,这段存储空间的起始地址(又称入口地址)称为这个函数的指针。
与数组指针相同,数组名是数组的地址,函数名是函数的地址。
(这点其实很好理解,一个文件中,不能有两个相同名字的函数,也不能有两个相同名字的数组)
2.定义一个函数指针变量
#include <stdio.h>
int main(){
int a;
int *p;
char c;
char *p;
int getData(int a, int b){
}
int *p(int a,int b);
void swap (int a, int b){
}
void *p(int a,int b);
与普通指针相同,函数指针在定义时只需将函数名替换为指针即可。
3.使用函数指针
函数调用概念和变量相同。
#include <stdio.h>
void print(){
puts("welcome!");
}
int main(){
void(*p)();//定义一个函数指针变量
p=print;//指针指向函数
print();//直接调用函数
(*p)();//通过指针调用函数
return 0;
}
welcome!
welcome!
回调函数的底层逻辑 线程
int pthread_create(pthread_t *id,const pthread_attr_t *attr, void*(*start_rtn)(void*), void *restrict arg);
QT的信号与槽