安徽网站设计哪家效果好,潍坊网站建设品牌,做网站怎么找客户,推广项目网站将函数像变量一样传递#xff0c;实际上拿到的是函数的地址#xff0c;由于函数类型的多样#xff0c;可以使用auto关键字#xff0c;可以使用 void(*function2)() #xff0c;不过它太繁琐#xff0c;因此使用typedef 起个名字 typedef void(*HelloWorldFunction)(); 叫…将函数像变量一样传递实际上拿到的是函数的地址由于函数类型的多样可以使用auto关键字可以使用 void(*function2)() 不过它太繁琐因此使用typedef 起个名字 typedef void(*HelloWorldFunction)(); 叫做HelloWorldFunction这样就像int或者char之类的用法来用它。 /*基本用法。这是一个 C 类型定义它创建了一个名为 HelloWorldFunction 的函数指针类型。该函数指针指向一个无返回值void且不带参数的函数。你可以使用 HelloWorldFunction 类型来声明变量将其指向满足这一函数签名要求的函数然后通过该变量来调用该函数。*/typedef void(*HelloWorldFunction)();HelloWorldFunction helloFun Hello;void(*function2)() Hello;auto function Hello;/*其实类似于以下操作只不过存在一个隐式转换*/auto fun Hello;function();常用一点的某一个函数需要传入函数作为参数。 先定义函数
void Hello() {std::cout Hello Wordl std::endl;
}void PrintValue(int value) {std::cout Value: value std::endl;
}void ForEach(const std::vectorint values, void(*func)(int)) {for (int value : values)func(value);std::cout values.size: values.size() ForEach end std::endl;主函数里调用
/*可能比较常用的选择*/std::vectorint values { 1, 2, 3, 4, 2};ForEach(values, PrintValue);/*或者使用lambda它是一个匿名函数*/ForEach(values, [](int value) { std::cout Values2: value std::endl; });