functions


函数基本就是我们编写的代码块,被设计来执行特定的任务。
当我们说到类,这些代码块被称为methods(方法),在这里说functions是在明确说某种不属于class的东西。
函数作用是在某些代码块需要多次重复复制和黏贴,这对维护十分不便利,我们可以写函数然后在代码中多次调用它。
可以怎么理解函数,有一个输入和一个输出,尽管不是必要,我们可以提供特定的参数,然后函数会返回。
在这里插入图片描述

可以看出上述函数,接受两个参数,都是整数,然后仅仅返回两个数字乘积,我们并不需要输入参数例如;
在这里插入图片描述
我们也可以不返回任何值,用void作为返回类型,把类似结果打印到控制台
在这里插入图片描述

调用函数

调用一个函数很简单
在这里插入图片描述
如果要输出一系列乘机到控制台
在这里插入图片描述
但这容易记错result顺序导致错误,可以将输出也加入函数
在这里插入图片描述
在这里插入图片描述
我们的目标应该是把代码拆成很多很多函数

原理

每次调用函数时,编译器会生成一个调用指令,这基本以为这在一个运行程序中,为了调用一个函数,我们需要为这个函数搭建一个stack frame (栈框架),也就是说我们要把参数push到栈上,还需要把返回地址放到栈上,然后其实要调到程序某个不同部分,以执行我们函数里的指令,然后我们push那个返回值,所以为了执行函数指令在内存中跳来跳去,这减慢了我们程序。
上述说的也不一定正确,因为这都是建立在编译器决定保留我们的函数,作为一个函数而非(inline)它
函数主要目的是防止代码重复

主函数

在这里插入图片描述
主函数有些奇怪,返回值是int但没有return
在这里插入图片描述
带返回值类型的函数一定要有返回值,上图直接便宜会爆错
在这里插入图片描述
主函数实际是一个特殊的函数,主函数且只有主函数可以不用一个返回值,如果没有指定返回值,会返回0.
其实这些没有返回值的报错会只出现在调试过程,我们release会发现并没有错误,这并不是说明是正确的,因为如果拿到那个返回值做其他事,会得到未定义,只是编译器没对我们响应,在调试过程中如果调试标记flags被激活,我们将会得到错误,他会帮我们调试代码。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值