函数
优质
小牛编辑
139浏览
2023-12-01
编程的乐趣在于自己编写函数。C++中的函数可不是高等数学各种数学操作符的函数。但C++中的函数则可以实现数学计算的功能。本节简单介绍C++中的函数,进一步的为了介绍C++中的类做准备。本节不会介绍函数的全功能,同学们看完本节,能看懂函数即可。
现在用一个例子来表示函数的作用。比如要计算1+2的结果并输出,C++中的程序可以这样写:
#include <iostream>
using namespace std;
int main()
{
int a = 1;
int b = 2;
int result = a + b;
cout<< "1 + 2 = " << result << endl;
return 0;
}
如果要把上面的程序写成函数,则为:
#include <iostream>
using namespace std;
int sum(int a, int b);//函数原型
int main()
{
int a = 1;
int b = 2;
int result = sum(a, b);//函数的调用
cout<< "1 + 2 = " << result << endl;
return 0;
}
int sum(int a, int b)//函数定义
{
return a + b;
}
现在来看二者的区别。首先,后段代码中的int sum(int a, int b);
表示函数的原型。函数的原型通常置于主程序之前,其告诉编译器在主程序中将会有一些代码调用这个函数,比如在本例子中就通过int result = sum(a, b);
调用了sum(a ,b)
函数。具体的:
- 函数原型中应定义函数的返回类型。本例子中函数原型中第一个关键词
int
表示返回类型,也就是经过函数运算处理后,返回一个整形; - 函数原型中应定义函数的名称。本例子中函数原型中函数名称为
sum()
,也就是说在调用的时候需要用sum()
; - 函数原型中应定义函数的参数。本例子中函数原型中函数参数(括号内)为
int a, int b
,也就是说函数在通过sum()
调用的时候,需要传入两个int
参数,其中第一个为a
,第二个为b
; 现在列举一些其他函数类型的实例供举一反三:
void nothing();//函数返回void类型(空类型),名称为nothing(),不传入任何参数
int main()
{
nothing();//直接调用nothing()函数
return 0;
}
void nothing()//函数定义
{
//函数具体计算代码略
}
double shit(double a, int b);//函数返回double类型,名称为shit(),传入一个double类型a,一个int类型b
int main()
{
double whatName;
double a = 2.1;
int b = 0;
whatName = shit(a, b);//调用shit()函数并将返回值赋给whatName
return 0;
}
double shit(double a, int b)//函数定义
{
//函数具体计算代码略
}
另外,如果函数定义在main()
函数之前,则可以省略掉函数原型,比如下面的代码和上面的作用相同:
//函数返回double类型,名称为shit(),传入一个double类型a,一个int类型b
double shit(double a, int b);
{
//函数具体计算代码略
}
int main()
{
double whatName;
double a = 2.1;
int b = 0;
whatName = shit(a, b);//调用shit()函数并将返回值赋给whatName
return 0;
}
OpenFOAM实例
下面的代码则在OpenFOAM中很常见:
//在main()函数之前的函数定义,返回volScalarField类型,函数名为Function()
volScalarField Function
(
//传入一个volVectorField类型
volVectorField U,
//传入一个dimensionedScalar类型
dimensionedScalar nu
)
{
//略
}
int main()
{
volScalarField p = Function(velocity, nu);
//声明一个volScalarField类型叫做p
//将Function(velocity, nu)函数返回的volScalarField赋值给p
}
这些就是C++中函数最基本的用法。在这里,用户应该能看懂OpenFOAM中基本的函数了。比如下面是直接抄自OpenFOAM的代码:
U = U - rAU*grad(p);
其中grad(p)
为一个函数,函数名字为grad()
,传入参数p
,返回一个变量类型并赋值给U
。
另外一个例子:
if (transonic())
其中transonic()
表示函数名为transonic()
的函数,不需要传入参数。其返回一个true
或者false
供if
判断。
再看下面这个例子:
scalar rho(scalar p, scalar T)
{
return 1000 + p/476*T;
}
其表示rho()
函数返回一个scalar
类型,在调用的时候需要传入scalar p, scalar T
参数。
好了,本节只是介绍C++中基本的函数功能,为用户后期学习类做铺垫。当然函数更丰富的功能比如const
函数,函数模板等,可参考其他C++教材。