//函数扩展--函数重载与函数指针 #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"); }