函数指针

120 阅读1分钟

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的信号与槽