C++_CH05_函数
1.1函数是什么
规则f有一个适用范围D,输出范围R
f:D ——> R
若x在D当中则:
f(x) = y
y在R当中。
1.2programming当中的函数
避免代码重复使用,将一部分代码封装成一个函数。
函数需要传入的参数和返回值的规定。
#include<iostream>
int Multiply(int a,int b)
{
return a*b;
}
int main()
{
int res = Multiply(3,5);
std::cout<<res<<std::endl;
std::cin.get();
}
output:
15
如果我们要输出多个相乘的结果,还是会有点麻烦:
#include<iostream>
int Multiply(int a,int b)
{
return a*b;
}
int main()
{
int res1 = Multiply(3,5);
std::cout<<res<<std::endl;
int res1 = Multiply(4,6);
std::cout<<res<<std::endl;
int res1 = Multiply(12,34);
std::cout<<res<<std::endl;
std::cin.get();
}
我们可以连同打印,一并封装一个函数:
#include<iostream>
void MultiplyandPrint(int a,int b)
{
int res = a*b;
std::cout<<res<<std::endl;
}
int main()
{
MultiplyandPrint(5,6);
MultiplyandPrint(7,6);
MultiplyandPrint(8,6);
MultiplyandPrint(9,6);
MultiplyandPrint(10,6);
MultiplyandPrint(11,6);
std::cin.get();
}
output:
30
42
48
54
60
66
但是不要把所有代码都封装成函数,这样会很难维护,并且看起来很乱。
因为我们封装函数的时候要把函数和返回值压入内存中的栈区(stack)。这样就会反复在内存和执行中跳跃,这都需要时间。
1.3可以不返回值吗
如果函数前面是除了void之外的,都需要返回值:
int multiply(int a,int b)
{
a*b;
}
int main()
{
int res = multiply(3,4);
}
会报错。
当然main前面也是int,不返回值却可以。main是唯一不需要遵循此规则的函数。