方法
声明
bool (*bigger)(const int& a, const int& b);
需要说明函数的传参以及返回值类型。
赋值
bigger = BiggerThan;
或者
bigger = &BiggerThan;
可以通过函数的名称或地址赋值。
调用
bigger(3,4) (*bigger)(5, 2)
上面2种方法都行
代码
#include<iostream>
#include<exception>
using namespace std;
bool BiggerThan(const int& a, const int& b)
{
return a > b;
}
int main()
{
cout << "start!" << endl;
bool (*bigger)(const int& a, const int& b);
bigger = BiggerThan;
cout << bigger(2,1) << endl;
bigger = &BiggerThan;
cout << bigger(3,4) << endl;
cout << (*bigger)(5, 2) << endl;
cout << "end!" << endl;
system("pause");
return EXIT_SUCCESS;
}
函数传参
- 值类型传递的时候,在函数中修改该值之后,值仍然不会改变,但是引用传递的话,会发生改变
int
、float
、等都是值类型,但是数组、类等就是引用类型,如果不想让函数修改引用类型的变量,可以在前面加上const
限定符,如果要将值传递类型的变量改变为引用传递,在函数传参的定义前面加上&就行。
代码
#include<iostream>
#include<exception>
using namespace std;
bool BiggerThan(const int& a, const int& b)
{
return a > b;
}
void RefTest(int &a)
{
a++;
}
void RefTestArray(int a[])
{
a[0] = 22;
}
int main()
{
cout << "start!" << endl;
int b = 1;
cout << b << endl;
RefTest(b);
cout << b << endl;
cout << "array : " << endl;
int c[3] = {3,4,5};
cout << c[0] << endl;
RefTestArray( c );
cout << c[0] << endl;
cout << "end!" << endl;
system("pause");
return EXIT_SUCCESS;
}