零
概述
为了程序的模块化管理,任何计算机语言都会设计函数,将多次执行的程序封装为函数,以供任何时候调用。下面介绍C++中的函数使用。
壹
函数简介
数据类型就是前文讲解的内容,经常使用的数据类型有:int、float等等,函数名称的命名与变量名称的命名要保持相同的法则,函数名后面开括号里的内容是调用函数的参数。
依据输入和输出的类型,C++函数可以大致分为以下几类
有输入,有输出有输入,无输出无输入,有输出无输入,无输出
一个函数的完整使用过程,不但包括函数的具体定义,还要在主程序main函数之前进行声明,如
using namespace std;\\函数声明输出类型 函数名称(参数1,参数2...)int main(){\\函数调用return 0;}\\函额具体定义输出类型 函数名称(参数1,参数2...){程序语句return 函数返回值;}
下面依次介绍这几种函数
贰
有输入,有输出
设计一个简单的数学函数,这个函数分为三个阶段,x在不同的阶段y有不同对应的函数值,如
y=x-1 x<0y=x^2 x>=0 && x<10y=x^3 x>+10
对应的C++程序为
using namespace std;double subroutine(double x);int main(){double x = 0;cout << "Please input X:\t" << endl;cin >> x;cout << "The Y is:\t" << subroutine(x) << endl;system("pause");return 0;}double subroutine( double x){if (x<0){return x - 1;}else if (x >= 0 && x < 10){return x*x;}else{return x *x*x;}}
上面的程序首先向屏幕请求一个输入,然后将用户输入的数值传入函数中,函数判断x的范围并进行相应的计算,当输入的数值为56时,输出的内容为
Please input X:56The Y is: 175616
叁
有输入,无输出
这里设计一个函数,这个函向屏幕输出许多行字符,输出的行数是通过参数传进来,这个函数不向主程序返回任何数值,只是向屏幕输出以字符,如
using namespace std;void subroutine(int x);int main(){int x = 0;cout << "输入行数:\t" << endl;cin >> x;subroutine(x);system("pause");return 0;}void subroutine( int x){for (int i = 1; i <= x; i++){cout << "第"<<i<<"行,共计"<<x<<"行。\n" << endl;}}
上面的程序接受一个整型参数,这个参数数值就是函向屏幕输入的字符串行数,当输入的数值为8时,输出的结果为
输入行数:8第1行,共计8行。第2行,共计8行。第3行,共计8行。第4行,共计8行。第5行,共计8行。第6行,共计8行。第7行,共计8行。第8行,共计8行。
肆
无输入,有输出
下面的函数没有接接受输入,但是向主程序返回了一个整型的数值,并将该数值赋值给一个整型变量,并且向屏幕输出了结果
using namespace std;\\define functionint subroutine();int main(){int output = 0;\\call subroutineoutput=subroutine();cout << output << endl;system("pause");return 0;}\\define functionint subroutine(){cout << "这是一个无输入但是有数值输出的函数!" << endl;cout << "这个函数输出的数值内容为:" << endl;return 23;}
上面的函数输出结果为
这是一个无输入但是有数值输出的函数!这个函数输出的数值内容为:23
伍
无输入,无输出
无输入也无输出的函数定义为
void functionname(){\\codes}
这种函数声明方式,不需要在函数中添加代码return,只需要设置输出类型为void即可。
设置无输入也无输出函数也可以采用如下方式
int functionname(){\\codesreturn0;}
上面代码将函数输出类型设置为int,而且在函数程序中添加了return 0,这意味着程序会返回一个0数值,这也是可行的。同样的道理,也可以
string functionname(){return "";}
这就返回了一个空的字符串,也是可行的。
下面给出了一个无输入也无输出的函数示例
using namespace std;void subroutine();int main(){subroutine();system("pause");return 0;}void subroutine(){cout << "这是一个没有输入,也没有数值输出的函数。" << endl;cout << "这个函数仅仅向屏幕输出了这两句话。" << endl;}
运行上述程序,只会向屏幕输出两句话,而没有任何的数值输出,输出结果为
这是一个没有输入,也没有数值输出的函数。这个函数仅仅向屏幕输出了这两句话。
陆
函数与数组的联合使用
函数不但可以用来接收一些简单的数据,还可以接收数组和指针类型的数据,这里介绍一个接收数组类型的函数例子
假设要计算一个班级里面所有人一学期的签到次数,就需要创建一个数组,数组的索引就是第几个人,数组的数值就是一个人签到的次数,这里假设一个班级里面有8个人,设计如下程序
using namespace std;const int people = 8;int sum(int arr[],int n);//第六行代码改成这样也是可以运行的,int sum(int [],int );int main(){int data;//班级里面每个人额签到次数int arr[8] = {1,2,3,4,5,6,7,8};//调用函数data = sum(arr, people);cout << "班级里所有人签到的总次数为:\t"<<data<< endl;system("pause");return 0;}int sum(int arr[], int n){int m = 0;for (int i = 0; i < n; i++){m += arr[i];}return m;}
注意第七行的注释,将int sum(int arrr[],int n)修改为 int sum(int [], int)也是可以正确运行的,这是因为函数原型中的参数不需要准确的变量名称,只需要知道数据类型就行。
关于函数、数组和指针的应用,会更加的有意思,下一部分帖子会重点讲解指针与数组的内容。