函数

函数


  • 函数
      函数的 形参 实参,返回值。void 表示无返回值,或者用在参数位置表示没有参数
         
  • 引用
      引用其实很类似于指针,在参数的传递中如果使用引用,可以直接在函数内部把外部变量的值给改掉。否则还得靠返回值去更新。
      这是类似于地址传递,直接改变原值。而普通的函数参数值传递是复制一份实参的值,如果这个值是int这样的小东西还好,但要是string或者数组等长度比较大的,再复制一份就有点浪费资源了。
      
      这个例子 定义形参的时候加了个&,里面直接对三个参数a b c进行翻倍,结果就是把外面的实参 x y z 翻倍了。不然的话得 依靠return来依次更新外部的x y z,比较繁琐。
      
      string的引用
        上面说过调用函数直接传递值的话,会把值复制一份,如果是大容量的类型,刚准备调用时候就已经浪费了很大的资源,这是不推荐的。推荐第二个 引用 模式。
        
        用引用的话,类似于指针,是可以对参数进行修改的,但是有时候我们不需要或者不能改这个参数,我们只是不想浪费资源,这时候可以把引用 定义为const,常量,不让改。
        
        这时候a 和 b 就不会被修改,只读模式,而且不创建备份,省资源。这种写法很流行,因为大部分都是不需要改传入参数的。
        
      内联函数 inline
        适用于特别短小的函数,但由于其不确定性,除非你能很明确的知道使用它会提高性能,否则不建议使用。
        
  • 函数的默认参数
        和python的默认参数很像,不指定参数值的话就是默认值,也可以在调用的时候更新这个参数值。
        
        上面的例子中,devide函数的参数b的默认值是2,也可以指定为别的值。
  • 函数的声明 declare
        函数在调用前需要先声明,在声明的时候可以不用写参数的名字,只写参数类型就可以了。下面的两种声明方式都是OK的
        
        当然,为了提升程序的易读性,还是建议写上参数名字。
        声明函数以后就可调用该函数了, 函数的定义define可以放在别的位置,比如main函数的后面,不受位置的影响。
        
        上面是函数的声明,下面是函数的定义,在主函数里面调用了odd函数。仅用此例说明函数的声明,当然可以用更简短的语句来实现同样的功能。
  • 函数的递归
        递归就是自己调用自己,在排序/计算阶乘等时候非常方便。注意递归函数在定义的时候要写好退出条件,不然容易造成死循环,或者爆栈
        

阅读原文

posted on 2019-05-24 11:19  chungehpu  阅读(135)  评论(0编辑  收藏  举报

导航