一.函数的语法形式
自定义函数和库函数是一样的,形式为:
ret_type/*返回类型*/ fun_name/*函数名*/(形式参数)/*函数的参数*/
以一个add函数为实例演示。实例如下
二.形式参数与实际参数
上述函数为判断年份是否为闰年的函数,如果是则输出1,如果不是则输出0,我们通过这个函数来充分理解形式参数与实际参数。
函数名后括号中的参数就是形式参数。
此处函数名后括号中的参数是实际参数
1.实际参数的定义
真实传给函数的参数,叫实参。
实参可以是:常量、变量、表达式、函数等。
无论实参是何种类型的量,在进行函数调用时,它们都必须有确定的值,以便把这些值传送给形
参。
2.形式参数的定义
形式参数是指函数名后括号中的变量,因为形式参数只有在函数被调用的过程中才实例化(分配内
存单元),所以叫形式参数。
形式参数当函数调用完成之后就自动销毁了。因此形式参数只在函数中有效。
3.形参与实参的区别与联系
(1)形参和实参是完全不同的内存空间
(2)形参是实参的一份临时拷贝
(3)形参的修改不会影响实参
形参和实参的深入学习会在后续的博客中写出。
三.return语句
在函数的设计环节中,经常会使用return,这里讲解一下return的使用方法。
(1)return后边可以是一个数值也可以是一个表达式,如果是表达式则先执行表达式,再返回表达式的结果。
这里可以有一个有趣的例子。
猜测一下这个代码的输出结果是什么。
想知道结果我们首先要知道printf这个库函数的返回值是什么,我们可以从<cstdio> (stdio.h) - C++ Reference这个网站中找到答案。
查询得知,printf的返回值为打印在屏幕上字符的个数。
那么我们可以开始分析了,刚才提到过,要先执行表达式,再返回表达式的结果。最右边的printf(“%d”,43)的返回值为2,那么中间的printf则变为printf(“%d”,2),那么他的返回值则是1,最外面的printf负责打印,于是输出结果为4321。
(2)return后面也可以什么都没有,直接写return,这种写法适合函数返回值类型是void的情况。
(3)return返回的值和函数类型返回类型不一致,系统会自动将返回的值隐式转换为函数的返回类型。
(4)return语句执行后,函数就彻底返回,后边的代码不再执行。
在循环嵌套语句中,当我们想要跳出里循环的同时跳出外循环时
会进行如下操作。
这样的操作在只有两层嵌套的时候还好说,但如果是n层嵌套,所要设置的标志未免太多了,此时,我们一个return便可以解决。
(5)如果函数中存在if等分支的语句,则要保证每种情况下都要有return返回,否则会出现编译出错。
这是判断闰年的函数,当我删除了不是闰年返回0的语句之后,编译器提示,不是所有的控件路径斗士返回值。所以在我们平时写代码的时候一定要考虑周全。