标签:缩进 str std turn 常见 不同的 类型 运算 struct
前面我已经写过和函数有关的博客( C++——数学函数 )。
函数,也叫作方法,它的作用是定义可重用的代码,并组织和简化这些代码。
所谓重用,就是重复使用的意思。在写代码时候,很多代码我们会重复使用到。比如在一个计算器程序中,常见的操作的有加减乘除等运算。如果是在之前,相加的数改变,我们就要改变源代码,而且如果做多次加法,我们就需要写相似的程序很多次。但是将加法的程序逻辑封装到函数以后,一次的加法调用函数即可。
#include <iostream> using namespace std; int main() { //初始化sum int sum = 0; //计算1~10的整数之和 for (int i = 1; i <= 10; i++) { sum += i; } cout << "Sum from 1 to 10 is " << sum << endl; //计算11~20的整数之和 sum = 0; for (int i = 11; i <= 20; i++) { sum += i; } cout << "Sum from 11 to 20 is " << sum << endl; //计算21~30的整数之和 sum = 0; for (int i = 21; i <= 30; i++) { sum += i; } cout << "Sum from 21 to 30 is " << sum << endl; return 0; }
可以看到,相似的代码我们写了三次。再看下面的代码
#include <iostream> using namespace std; //将这段相似的代码用函数封装起来 void sum (int startNumber, int endNumber) { int sum = 0; //计算startNumber~endNumber的整数之和 for (int i = startNumber; i <= endNumber; i++) { sum += i; } cout << "Sum from " << startNumber << " to " << endNumber << " is " << sum << endl; } int main() { //1~10的所有整数之和 sum(1, 10); //11~20的所有整数之和 sum(11, 20); //21~30的所有整数之和 sum(21, 30); return 0; }
两段代码实现的功能完全一样。但是,从修改难易的角度看,对于第二段代码,如果我们要更改数字的范围,那么只改动两个参数即可,如果要改变实现的功能(如变成每隔一个数相加),那么我们只修改一次函数内部的实现就可以了。而第一段代码则要改很多东西,如果忘记改动某处,就会造成错误。函数的好处可见一斑。
定义函数的语法如下:
returnValueType functionName(list of parameters) { //Function body }
这时候不难发现,我们经常见到的int main() {...}就是一个函数。main函数的返回值是int类型,所以要在最后return 0; 0表示程序成功执行。main函数是系统函数,是程序的入口,系统只会执行main函数里的代码。如果在你的程序中没有main函数,只有一些其他简单的函数,那么你的程序将无法执行。
调用函数的方式很简单,使用函数名()即可。参加上面的代码。
唯一要注意的就是,C++的函数在使用之前必须声明。也就是说,函数要么写在main函数前面,要么先声明,然后在main函数后面写。
第一种
#include <iostream> using namespace std; //在main函数之前实现 void function () { //function body } int main() { //执行三次function函数 function (); function (); function (); return 0; }
第二种
#include <iostream> using namespace std; //在main函数之前声明,这部分叫做函数原型 void function (); int main() { //执行三次function函数 function (); function (); function (); return 0; } //在main之后实现 void function () { //function body }
标签:缩进 str std turn 常见 不同的 类型 运算 struct
原文地址:https://www.cnblogs.com/bwjblogs/p/12634032.html