C++primeer 6.7节练习(函数指针,函数指针形参)
2017-10-12 16:06
423 查看
6.54
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*函数指针*/
int test(int a, int b);
/*定义一个指向test函数类型的指针 pf*/
int(*pf)(int, int);
/*用decltype和typedef定义此函数类型指针*/
typedef decltype(test) *pf1;
/*或者这样写*/
typedef int(*pf2)(int, int);
/*定义一个vector对象,其元素是指向此函数类型的指针*/
vector<pf1> Vec;
/*或是这样*/
vector<decltype(test) *> Vec1;
6.56
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*函数指针*/
int Sum(int a, int b)
{
return a + b;
}
int Dec(int a, int b)
{
return a - b;
}
int Mul(int a, int b)
{
return a * b;
}
int Div(int a, int b)
{
return a / b;
}
/*定义一个指向test函数类型的指针 pf*/
int(*pf)(int, int);
/*用decltype和typedef定义此函数类型指针*/
typedef decltype(Sum) *pf1;
/*或者这样写*/
typedef int(*pf2)(int, int);
/*定义一个vector对象,其元素是指向此函数类型的指针*/
vector<pf1> Vec{Sum,Dec,Mul,Div};
/*或是这样*/
vector<decltype(Sum) *> Vec1{Sum,Dec,Mul,Div};
/*函数指针形参*/
void Compute1(int j, int k, pf1 PF1)
{
cout << PF1(j,k) << endl;
}
/*或者这样写*/
void Compute2(int j, int k, int(*PF2)(int, int))
{
cout << PF2(j, k) << endl;
}
int main()
{
int A = 5, B = 10;
cout << "采用Compute1" << endl;
cout << "加减乘除结果为: " << endl;
for (auto p : Vec)
Compute1(A, B, p);
cout << "采用Compute2" << endl;
cout << "加减乘除结果为: " << endl;
for (auto p1 : Vec)
Compute2(A, B, p1);
system("pause");
return 0;
}
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*函数指针*/
int test(int a, int b);
/*定义一个指向test函数类型的指针 pf*/
int(*pf)(int, int);
/*用decltype和typedef定义此函数类型指针*/
typedef decltype(test) *pf1;
/*或者这样写*/
typedef int(*pf2)(int, int);
/*定义一个vector对象,其元素是指向此函数类型的指针*/
vector<pf1> Vec;
/*或是这样*/
vector<decltype(test) *> Vec1;
6.56
#include <iostream>
#include <string>
#include <vector>
using namespace std;
/*函数指针*/
int Sum(int a, int b)
{
return a + b;
}
int Dec(int a, int b)
{
return a - b;
}
int Mul(int a, int b)
{
return a * b;
}
int Div(int a, int b)
{
return a / b;
}
/*定义一个指向test函数类型的指针 pf*/
int(*pf)(int, int);
/*用decltype和typedef定义此函数类型指针*/
typedef decltype(Sum) *pf1;
/*或者这样写*/
typedef int(*pf2)(int, int);
/*定义一个vector对象,其元素是指向此函数类型的指针*/
vector<pf1> Vec{Sum,Dec,Mul,Div};
/*或是这样*/
vector<decltype(Sum) *> Vec1{Sum,Dec,Mul,Div};
/*函数指针形参*/
void Compute1(int j, int k, pf1 PF1)
{
cout << PF1(j,k) << endl;
}
/*或者这样写*/
void Compute2(int j, int k, int(*PF2)(int, int))
{
cout << PF2(j, k) << endl;
}
int main()
{
int A = 5, B = 10;
cout << "采用Compute1" << endl;
cout << "加减乘除结果为: " << endl;
for (auto p : Vec)
Compute1(A, B, p);
cout << "采用Compute2" << endl;
cout << "加减乘除结果为: " << endl;
for (auto p1 : Vec)
Compute2(A, B, p1);
system("pause");
return 0;
}
相关文章推荐
- C++语言笔试题目写一个函数计算当参数为n(n很大)时的值 1-2+3-4+5-6+7......+n&字符指针、浮点数指针、以及函数指针占用的内存等
- 【转】C/C++ 函数指针与类函数指针
- C++利用二级指针做函数形参来进行修改实参的实例分析
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- C++学习笔记:函数指针语法基础以及函数指针做函数参数的思想剖析
- c++中的函数指针和类成员函数指针
- C/C++ 一段代码区分数组指针|指针数组|函数指针|函数指针数组
- 函数指针(函数指针作为函数形参/函数类型作为函数返回类型)
- [c++] 函数指针和函数指针数组的使用方法
- C指针进阶-函数指针、函数名做形参
- C指针进阶-函数指针、函数名做形参
- c++二维数组以指针数组形式作为形参传进函数
- 对C++中指针做函数形参的理解
- C++语法基础--模板实参推断,模板类型形参的实参的受限转换,模板实参推断与函数指针
- C指针进阶-函数指针、函数名做形参
- 《C++ Prime Plus 第七章》—数组、函数、指针初步
- C/C++ 函数指针与类函数指针
- C/C++函数形参传实参时值传递、指针传递、引用传递的区别
- C++ primer(七)--函数、C++的编程模块 函数指针 函数指针数组 typedef
- C/C++中函数参数传之指针形参