171024—函数自学【知识点初识】
来源:互联网 发布:美编软件 编辑:程序博客网 时间:2024/06/01 08:00
楔子:
看书,关于函数的很多概念、定义、描述,使我觉得:如果我们说,之前研究的维度更多停留在数据(分子)层面(抛去之前的语句相关),那么函数就很像是在数据的层面上向上跨入了一个更高维度,它保留了很多当时在学习变量时接触的类似定义,但又有发展。
它的很多定义让人觉得耳目一新,它的思维方式很有味道。
之前大概是最后一次写类似知识点整理类总结的时候提过,总结不应该仅仅是知识点的教材式罗列。而应该在绝大意义上为个人学习的感悟,flag即立,那就不要说破就破了。
开始吧
函数是个啥呢? 书上说“函数是功能的抽象”,在我看来这佐证了我之前对于函数的英文单词(function)的猜测,函数意味着一定的功能,能够完成一定的工作。
- 它是模块化的,可以一个一个地被定义,然后在需要的时候被调用出来执行它能够执行的功能。
就像定义一个变量一样我们可以定义一个函数:
类型 函数名(形参表) int main()//类型指的是返回值的类型,函数存在的最终意义是输出一个我们需要的结果值{ { //main是函数的名字,就像给变量命名一样,也可以给函数命名。 语句序列} }
函数这个概念很好理解,而它如何工作的原理实在好玩。
当我们定义好一个函数之后,记得有个概念叫主函数吧?就是用来描述你这个程序要做的那件事的那个函数,那是你解决问题的主线。你定义的函数基本上在主函数里就只能占到一行台词来调用它。
如何调用?直呼其名,就像我们使用一个变量一样。
呼叫函数之后,请看定义函数时函数首部的第三部分:形式参数表。“参数是函数与外部传输数据的纽带”,调用函数,就意味着要把一些值输入函数,函数运算,函数输出一个我们需要的值(返回)。
而形参就是用来存放这些“输入的值”的,
函数运算即执行函数内部写好的语句。
而之前一直搞不懂的return,就是将函数得到的值送到你呼叫函数的地方(??外卖??)
对外看起来挺有意思了,但内部更有意思。
对外,参数是提取(想象任何生化实验室里常见的那种排式滴管和一排小瓶试剂!!)外部给的数据的工具,对内,它起到了我们所熟悉的类似变量(常量)的作用:参与运算。
为贴合语境,我把在这之前我们一直接触的那种只有一个main函数的结构拿来作比较。
函数本身可以看做一个“没头没尾”的“main函数”,因为一个函数定义出来之后。它没有我们所熟悉的那种数据的初始化,没有“赋值”,没有cin输入。而走完一遭之后,有return的看不出return到了哪里,甚至于有的连return也没有。所以它看起来有点怪(我承认有好几次我把定义函数看成了主函数描述,并为其没有输入没有输出而头疼。。)
但“没头没尾”也意味着,它有除此以外的任何东西,你可以把它比作任何投入原料,得到产品的机器。
功能齐全。形式参数是预留的参数口,等着去提取需要的数据,一旦有了数据,它就会被激活,执行命令,送出结果。
神奇之处当然不止这里。它不但“没头没尾”,而且“无影无踪”。
它所“定义并使用”的参数,系统根本不会分配内存单元给它,只有在函数被调用,参数需要提取值的时候,系统才会给他个临时单元。阅后即焚。而他return出来的那个数,是系统甩手接住,顺手扔到call它的地方,然后剁手。。
是曰:来无影而去无踪也。就像从来都没存在过一样,任尘世风云变化,我自岿然不动,唤我即出,助后自散。大造化也。。。
基于这一特性,主函数里要参与函数计算的值并不会被改变什么。因为它们在开始时就被复制了,自己傻愣愣的杵那,被卖了都不知道,继续给主函数数钱。。。
P.S. 过于不正经。。。
- 171024—函数自学【知识点初识】
- 171027—函数自学【知识点初识二】
- 自学1-初识css
- Vue入门知识点—初识vue
- 自学Hadoop1.0——初识MapReduce基本组件
- Hibernate4自学入门(一)——初识Hibernate
- STM32自学——初识固件库(by Woody)
- AngularJS自学之路——知识点记录(一)
- hadoop自学轨迹-初识hadoop
- 初识函数
- 初识函数
- 171029—函数自学【函数地址和函数指针】
- 初识Android项目知识点积累
- AngularJS自学之路(一)——初识AngularJS和数据绑定
- 黑马程序员进阶自学1 初识C#
- MongoDB自学笔记2---1.2初识MongoDB
- 初学者Unity3D自学(第一篇:初识)
- FreeMarker自学之路 (一)初识
- lua解决八皇后问题
- Linux系统网卡名称固化
- 实验三、链队列和顺序队列
- Git简介
- Hbase遍历方式
- 171024—函数自学【知识点初识】
- C++如何在.h头文件中直接定义函数
- 来自Java老师上课实例
- 15Python中的面向对象
- 通过db.properties文件的存放位置谈java项目及Web项目的路径问题
- 使用Bootstrap和Vue实现用户信息的编辑
- Linux系统磁盘监控邮件告警
- 16Python中的正则表达式
- AES加解密