无参函数指针的声明和调用
#include
int func1()
{return 1;
}
int main()
{int (*ptrFunc)();ptrFunc = func1;std::cout<<(*ptrFunc)();return 0;
}
运行以上代码,控制台输出1。
第8行 函数指针的声明。int对应函数返回类型。
第9行 指针的赋值。
第10行 函数指针的调用。不要漏了后面的一对括号。
带参数的函数指针的声明和调用
#include
int add(int a, int b)
{return a + b;
}
int main()
{int (*ptrFunc)(int, int);ptrFunc = add;std::cout<<(*ptrFunc)(1,2);return 0;
}
运行以上代码,控制台输出3。
第8行 相比上一段代码,同样是函数指针的声明,第2个括号中多了2个int,这对应函数的参数。
别名typedef
函数指针的声明比较复杂,通常为它起个别名。
typedef int(*LPFUNCADD) (int,int); //返回类型(*别名) (参数1, 参数2)
函数指针的定义可以简写成这样。
LPFUNCADD ptrFunc;
完整代码如下
#include
int add(int a, int b)
{return a + b;
}
typedef int(*LPFUNCADD) (int,int); //返回类型(*别名) (参数1, 参数2)
int main()
{LPFUNCADD ptrFunc;ptrFunc = add;std::cout<<(*ptrFunc)(1,2);return 0;
}