函数基本就是我们编写的代码块,被设计来执行特定的任务。
当我们说到类,这些代码块被称为methods(方法),在这里说functions是在明确说某种不属于class的东西。
函数作用是在某些代码块需要多次重复复制和黏贴,这对维护十分不便利,我们可以写函数然后在代码中多次调用它。
可以怎么理解函数,有一个输入和一个输出,尽管不是必要,我们可以提供特定的参数,然后函数会返回。
可以看出上述函数,接受两个参数,都是整数,然后仅仅返回两个数字乘积,我们并不需要输入参数例如;
我们也可以不返回任何值,用void作为返回类型,把类似结果打印到控制台
调用函数
调用一个函数很简单
如果要输出一系列乘机到控制台
但这容易记错result顺序导致错误,可以将输出也加入函数
我们的目标应该是把代码拆成很多很多函数
原理
每次调用函数时,编译器会生成一个调用指令,这基本以为这在一个运行程序中,为了调用一个函数,我们需要为这个函数搭建一个stack frame (栈框架),也就是说我们要把参数push到栈上,还需要把返回地址放到栈上,然后其实要调到程序某个不同部分,以执行我们函数里的指令,然后我们push那个返回值,所以为了执行函数指令在内存中跳来跳去,这减慢了我们程序。
上述说的也不一定正确,因为这都是建立在编译器决定保留我们的函数,作为一个函数而非(inline)它
函数主要目的是防止代码重复
主函数
主函数有些奇怪,返回值是int但没有return
带返回值类型的函数一定要有返回值,上图直接便宜会爆错
主函数实际是一个特殊的函数,主函数且只有主函数可以不用一个返回值,如果没有指定返回值,会返回0.
其实这些没有返回值的报错会只出现在调试过程,我们release会发现并没有错误,这并不是说明是正确的,因为如果拿到那个返回值做其他事,会得到未定义,只是编译器没对我们响应,在调试过程中如果调试标记flags被激活,我们将会得到错误,他会帮我们调试代码。