第五章 函数
每当编写几乎相同的代码时,可以编写自己的函数,然后多次调用
5.1函数看作黑盒
5.2 实现函数
例1:
#include <iostream>
using namespace std;
/**
Computes the volume of a cube //用途
@param side_length 立方体边长 //变量
@return the volume //返回值
*/
double cube_volume(double side_length) //返回值类型 函数名 (参数变量类型 参数变量也叫形参)
{
double volume = side_length * side_length * side_length;
return volume;
}
int main()
{
double result1 = cube_volume(2);
double result2 = cube_volume(10);
cout << result1 << endl;
cout << result2 << endl;
return 0;
}
5.3参数传递
1、尽量不要改参数变量,如5.2中例子程序中函数体引入了volume变量
5.4 返回值
1、return语句指定函数结果,执行时函数将立即退出,便于在开始时处理函数异常情况,如例2:
double cube_volume(double side_length) //返回值类型 函数名 (参数变量类型 参数变量名)
{
if (side_length < 0)
{
return 0;
}
double volume = side_length * side_length * side_length;
return volume;
}
2、return语句也可以返回表达式的值,如例3:
double cube_volume(double side_length) //返回值类型 函数名 (参数变量类型 参数变量名)
{
if (side_length < 0)
{
return 0;
}
return side_length * side_length * side_length;
}
3、函数每个分支都要返回一个值,(编译器可能报错,也可能返回一个安全的值),如例4:
#include <iostream>
using namespace std;
/**
Computes the volume of a cube //用途
@param side_length 立方体边长 //变量
@return the volume //返回值
*/
double cube_volume(double side_length) //返回值类型 函数名 (参数变量类型 参数变量名)
{
if (side_length < 0)
{
return 0;
}
if (side_length > 0)
{
return side_length * side_length * side_length;
}
//没有side_length=0时的返回值
}
int main()
{
int num1 = 0;
cout << "input a side_length: ";
cin >> num1;
cout << cube_volume(num1) << endl;
return 0;
}
键入0后,结果没看懂,以后再说吧!
4、函数可以提前声明,就可以先写main函数,再定义函数,如例5:
double cube_volume(double side_length);
5.5 无返回值的函数
适用于需要执行一系列指令,但不产生返回值,使用void类型,如例6:
#include<iostream>
#include<string>
using namespace std;
/**
打印框线包围的字符串
@param str 字符串
*/
void box_str(string str)
{
int n = str.length();
if (n == 0)//更严谨些
{
cout << "please input a zifuchuan:"<<endl;
return;
}
for (int i = 1;i < n + 2;i++)
{
cout << "-";
}
cout << endl << "!" << str << "!" << endl;
for (int i = 1;i < n + 2;i++)
{
cout << "-";
}
}
int main()
{
box_str("");
box_str("sdfghjklkjhgfdsdfgh");
return 0;
}
5.6 可重用函数
5.7 逐步细化
在集成开发环境(还太清楚是啥)中,如果一个函数太长,以至不能容纳其代码,则应将其分解为多个函数,函数里套另一个函数
5.8 变量作用域和全局变量
少用全局变量
5.9 引用参数
1、在函数需要更新变量时需要使用引用参数
2、调用函数时,将实参的值传递对应的形参,即为值传递。由于形参有自己独立的存储空间,又作为函数的局部变量使用,因此在函数中对任何形参值得修改都不会改变实参变量的值。如例7: