原始函数指针(raw function pointer):C中传统的函数指针;
函数指针是将一个函数赋值给一个变量的方法。
示例一:
#includevoid HelloWorld() { std::cout << "Hello World" << std::endl; } int main() { auto function = HelloWorld; //隐式转换:函数名是一个函数的地址,即与:auto function = &HelloWorld; 等价 function(); //打印出Hello World return 0; }
示例二:
#includevoid HelloWorld() { std::cout << "Hello World" << std::endl; } int main() { void(*foo)() = HelloWorld; foo(); return 0; }
示例三:使用函数别名
#includevoid HelloWorld(int a) { std::cout << "Hello World" << a << std::endl; } int main() { typedef void(*HelloWorldFunction)(int); HelloWorldFunction function = HelloWorld; function(5); return 0; }
示例四:函数指针的应用
#include#include void Print(int value) { std::cout << value << std::endl; } void ForEach(const std::vector & values, void(*func)(int)) { for(int value : values) Print(value); } int main() { std::vector values = {1, 4, 5, 6}; ForEach(values, Print); return 0; }
示例五:使用lambda函数
#include#include void ForEach(const std::vector & values, void(*func)(int)) { for(int value : values) Print(value); } int main() { std::vector values = {1, 4, 5, 6}; ForEach(values, [](int values) { std::cout << value << std::endl;}); return 0; }



