项目知识点补充:
1.函数的名字就是函数的地址,函数的地址有两种表现形式:fun 或者&fun
2.函数地址的类型:函数声明去掉函数名字就是函数地址的类型(即由函数的返回值类型和函数的参数及个数决定)
为什么要知道函数地址的类型?
定义一个函数地址类型的指针来指向函数,然后通过这个指针变量去调用这个函数。
举例:
//函数地址
#include <iostream>
#include <cstdio>
//函数地址的类型:int (int a)
int fun (int a)
{
printf("我是fun\n");
return 9;
}
//fun和fun1的函数类型完全相同
int fun1 (int a)
{
printf("我是fun1\n");
printf("我是fun1\n");
printf("我是fun1\n");
return 1;
}
int main() {
//int (int a)为fun的函数地址类型
//int (int a) (*p);理论上这个写法可行,但是正确的写法是下面//p为指向fun这个函数地址类型的指针,(*p表示指针)
int (*p) (int a) = fun;
//正确的函数指针变量定义,可以不用写变量a,左边也可写成&fun
//而且(*p)必须加括号,如果不加括号就成了返回值为int *的函数p(int a)
//用指针变量p去调用函数;
// 函数调用:函数地址()
p(2); //也可以写成(*p)(2)和&fun配套使用
return 0;
}