//函数扩展--函数重载与函数指针
#include<iostream>
using namespace std;
//函数参数类型不同
void Fuc(char * b){
printf("%s\n",b);
}
//函数参数个数不同
int Fuc(int a, int b){
return a + b;
}
//函数参数类型不同
void Fuc2(const char * b){
printf("%s\n", b);
}
void main(){
//定义函数指针类型
//引申 定义数组类型
typedef int MyArr[10];//定义了一个 int a[10]的数组
MyArr a;
typedef int(*MyArrP)[10];//定义了一个 int a[10]的数组类型指针
MyArrP p = &a;
//函数指针类型(这里也验证了 函数重载的函数都是不同函数类型的)
typedef int(*FuncP)(int, int);
FuncP p1 = Fuc;//Fuc是一个函数名,函数名代表函数的入口地址,函数名就是函数指针变量
typedef void(*FuncP2)(char *);
FuncP2 p2 = Fuc;
p2("函数指针你好!");
typedef void(*FuncP3)(const char *);
typedef void(*FuncP4)(char *);
//注意 定义函数类型的时候 const 等关键字也不能省略
FuncP3 p3 = Fuc2;
//FuncP4 p4 = Fuc2;
//报错 error C2440: “初始化”: 无法从“void (__cdecl *)(const char *)”转换为“FuncP4”
system("pause");
}