一、函数的地址
前面讲 程序运行起来以后,在内存中有代码区,程序执行每一条指令,是从内存中读出来这条指令,然后再执行。所谓函数的地址是指函数的入口地址,这个函数的从这个地址开始进入执行,也就是从这个地址处取指令执行。
那么在代码层面,函数的地址用 函数指针变量 来存储。
二、基本使用
1、函数指针定义
函数指针的定义,在语法看起来稍微有点怪,只需要记住形式返回值 (*指针变量名)(形参类型);
比如,以下4个函数
void func1(void)
{
}
int func2(void)
{
}
int func3(int a)
{
}
int func4(int a,int b)
{
}
int func5(int a,int b)
{
}
可以定义如下指针变量来记录其地址,注意指针变量的类型一定要跟函数匹配。
void (*p1)(void);
int (*p2)(void);
int (*p3)(int);
int (*p4)(int,int);
2、取函数的地址
函数的地址有两种方法获得 &函数名 或者 直接函数名,两种方式等效。
p1 = &func1;
p2 = &func2;
p3 = &func3;
p4 = &func4;
//以下等效于上面
p1 = func1;
p2 = func2;
p