171024—函数自学【知识点初识】

来源:互联网 发布:美编软件 编辑:程序博客网 时间:2024/06/01 08:00

楔子:
看书,关于函数的很多概念、定义、描述,使我觉得:如果我们说,之前研究的维度更多停留在数据(分子)层面(抛去之前的语句相关),那么函数就很像是在数据的层面上向上跨入了一个更高维度,它保留了很多当时在学习变量时接触的类似定义,但又有发展。
它的很多定义让人觉得耳目一新,它的思维方式很有味道。

之前大概是最后一次写类似知识点整理类总结的时候提过,总结不应该仅仅是知识点的教材式罗列。而应该在绝大意义上为个人学习的感悟,flag即立,那就不要说破就破了。

开始吧
函数是个啥呢? 书上说“函数是功能的抽象”,在我看来这佐证了我之前对于函数的英文单词(function)的猜测,函数意味着一定的功能,能够完成一定的工作。

  • 它是模块化的,可以一个一个地被定义,然后在需要的时候被调用出来执行它能够执行的功能。

就像定义一个变量一样我们可以定义一个函数:

类型  函数名(形参表)      int main()//类型指的是返回值的类型,函数存在的最终意义是输出一个我们需要的结果值{                       {          //main是函数的名字,就像给变量命名一样,也可以给函数命名。    语句序列}                       }

函数这个概念很好理解,而它如何工作的原理实在好玩。

当我们定义好一个函数之后,记得有个概念叫主函数吧?就是用来描述你这个程序要做的那件事的那个函数,那是你解决问题的主线。你定义的函数基本上在主函数里就只能占到一行台词来调用它。
如何调用?直呼其名,就像我们使用一个变量一样。

呼叫函数之后,请看定义函数时函数首部的第三部分:形式参数表。“参数是函数与外部传输数据的纽带”,调用函数,就意味着要把一些值输入函数,函数运算,函数输出一个我们需要的值(返回)。
而形参就是用来存放这些“输入的值”的,
函数运算即执行函数内部写好的语句。
而之前一直搞不懂的return,就是将函数得到的值送到你呼叫函数的地方(??外卖??)

对外看起来挺有意思了,但内部更有意思。

对外,参数是提取(想象任何生化实验室里常见的那种排式滴管和一排小瓶试剂!!)外部给的数据的工具,对内,它起到了我们所熟悉的类似变量(常量)的作用:参与运算。

为贴合语境,我把在这之前我们一直接触的那种只有一个main函数的结构拿来作比较。
函数本身可以看做一个“没头没尾”的“main函数”,因为一个函数定义出来之后。它没有我们所熟悉的那种数据的初始化,没有“赋值”,没有cin输入。而走完一遭之后,有return的看不出return到了哪里,甚至于有的连return也没有。所以它看起来有点怪(我承认有好几次我把定义函数看成了主函数描述,并为其没有输入没有输出而头疼。。)

但“没头没尾”也意味着,它有除此以外的任何东西,你可以把它比作任何投入原料,得到产品的机器。
功能齐全。形式参数是预留的参数口,等着去提取需要的数据,一旦有了数据,它就会被激活,执行命令,送出结果。

神奇之处当然不止这里。它不但“没头没尾”,而且“无影无踪”。
它所“定义并使用”的参数,系统根本不会分配内存单元给它,只有在函数被调用,参数需要提取值的时候,系统才会给他个临时单元。阅后即焚。而他return出来的那个数,是系统甩手接住,顺手扔到call它的地方,然后剁手。。

是曰:来无影而去无踪也。就像从来都没存在过一样,任尘世风云变化,我自岿然不动,唤我即出,助后自散。大造化也。。。

基于这一特性,主函数里要参与函数计算的值并不会被改变什么。因为它们在开始时就被复制了,自己傻愣愣的杵那,被卖了都不知道,继续给主函数数钱。。。

P.S. 过于不正经。。。