您的位置:首页 > 编程语言 > C语言/C++

《爱编程,爱c++十二期-第三章-c++函数思想》

2015-06-07 10:42 423 查看

我们继续复习第三章的知识点,可以说除了深度探索都是重点,压力山大啊……

由于第三章信息量庞大又极其重要,所以我会细细道来。

首先,咱们聊聊嵌套调用。函数呢,允许嵌套调用,什么意思呢?函数1可以调用函数2,函数2再调用函数3……就好像军需处的首长命令各炊事班班长制作干粮,炊事班班长寻找面粉厂厂长或者面粉商人,面粉厂厂长又去找……当然这其中必然是有利用之关系,也就是关联性的两个或者多个功能机构。

函数可以直接或间接地调用自身,称为递归调用。其实递归调用在我们生活中很广泛。比如大机器不断在转,结束的信号触发它返回自己“函数”原始的状态继续循环往复地工作下去。

什么是递归思想呢?递归思想有两个阶段:递推、回归。这就好像我们小时候爱问问题寻根究底。

递推过程:

小明:“爸爸,这个树叶是怎么来的啊。”爸爸:“是树枝上长出来的”

“树枝是怎么来的呢?”

“树枝啊,原来是小树苗长出来的”

“小树苗呢?小树苗怎么来的?”

“啊,那是种子经过某种过程慢慢发育而来的。”

“那种子呢?”

“种子啊,树上结的呗。有的放在果实里,有的直接裸露出来。”……

回归过程:

小明:“哦~~我明白了,也就是说,种子慢慢生长长出了小树苗,小树苗又长大长出树枝,树枝又长出了树叶对不对?”

爸爸:“真是个小聪明!”

以上,是我对于递归思想的表象可爱版理解,下面是有能力者的严肃版。递归应该是对原问题不断分解,将之变得可以解决的问题的过程。就好像我们不会5+5我们就把每个5分解成4+1,然后3+1+1,而后推成2+1+1+1,最后得出我们这些只会1+1的人世界里的1+1+1+1+1然后再回归回去。递归思想对于我们人类的进步的意义是非常大的!

下面我们聊聊值传递和引用传递。

值传递是指当发生函数调用时,给形参分配内存空间,并用实参来初始化形参(直接将实参的值传递给形参)。这一过程是参数值的单向传递过程,一旦形参获得了值便与实参脱离关系,此后无论形参发生了怎么样的改变,都不会影响到实参。

什么意思呢?这就好像封建时期农民交皇粮一样。农民的“皇粮交给地方,地方又进行处理给中央,中央又进行处理……上交的粮食不会再返回来,因为已经进入其它系统了。如果不发生什么大的自然灾害,中央给地方拨粮,交上去的粮食已于劳苦大众没有太大干系了。

引用传递是啥呢?引用是一种特殊类型的变量,可以被认为是另一个变量的别名。这个非常好理解,我就不多唠叨了。其实就是我们生活中的起外号。

内联函数不是在调用时发生控制转移,而是在编译时将函数体嵌入在每一个调用处。这个内联函数很像我们考试。我们考试每个人都会得到一张卷子而不是让你看着一张空白卷子去拿张白纸写答案,我们的物质还没贫乏到那种地步。另外,如果这张试卷特别大呢?像辞海那么厚呢?这么做好么?当然不好,这有点浪费纸张,学生也吃不消,所以我们会想这是不是不切合实际,我们或许会改成网上答题或者分批次考试其中的题目等处理方案……

发卷子考试而不是大家看着黑板上的题目做,这就是节省了参数传递(抄黑板上的题)、控制转移(卷子传者看、做)等开销(时间开销),但是这个卷子最好是题目少一点的卷子(函数),要不然太野蛮暴力了,像填鸭。所以书中讲到:因此,对于一些功能简单、规模较小又使用频繁的函数,可以设计为内联函数。inline是内联的意思 ['ɪn,laɪn][ɪnlaɪn]

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: