输出参数能做到的事情,为什么要用返回值呢,直接打印一下不就可以了吗?
接下来就说说有哪些是输出参数做不了的事情,然而返回值能做的,并且效率更高。
区别:调用者必须负责分配或者声明输出参数的存储,必须负责输出参数的有效性。如果这个参数本身是非法的,则往输出参数写数据会出现不可预期的后果。
而对返回值来说,调用者不需要预先分配返回值所占用的空间,这个空间必然存在,它是在生成返回值的时候自动创建的。
用买奶茶打比方的话,输出函数类似于你去买奶茶必须自带杯子不然什么都得不到,而返回值意味着卖家提供了已经打包好的奶茶。
换个角度,对于一个函数来说,只有返回值是必定有效的对外沟通渠道,而调用者传入的输出参数完全可能是非法的。