读钱能的C++有感(函数篇)

一. 函数

1.C++不允许函数定义嵌套,即在函数定义中再定义一个函数是非法的。

2.return语句起到了改变计算顺序的作用,因为return是返回语句,它将退出函数体,所以该语句之后的语句不会被执行了。

3.全局变量与局部变量。

  • 程序的内存区域。

             一些变量在整个程序中都是可见的,它们称为全局变量,一些变量只能在一个函数中可知,称为局变变量。

           程序将操作系统分配给其运行的内存块分为4个区域:代码区,全局数据区,堆区,栈区;全局数据区存放程序的全局数据和静态数据,堆区存放程序的动态数据,栈区存放程序的局部数据,即各个函数中的数据。

         全局变量由编译器建立,并且初始化为0,而局部变量的类型修饰是auto,表示该变量在栈中分配空间,但习惯上省略auto.函数中的局部变量存放在栈区,在函数开始运行时,局部变量在栈区被分配空间,函数退出时,局部变量随之消失;局部变量没有初始化,如果局部变量不被显式初始化,那么,其内容是不可预料的。

        静态局部变量:其存放在内存的全局数据区,函数结束时,静态局部变量不会消失,每次该函数调用时,也不会为其重新分配空间,直到程序运行结束;静态局部变量的初始化也为0;静态局部变量只在定义它的函数中可见。静态局部变量的用途,可以使用它确定某函数是否被调用过,使用它保留多次调用的值。

4.内联函数

  内联函数也称内嵌函数,它主要是解决程序的运行效率。

  •  编译器看到inline后,为该函数创建一段代码,以便在后面每次碰到该函数的调用都用相应的一段代码替换,内联函数可以在一开始只声明一次。
  • 注意:内联函数必须在被调用之前声明或定义,因为内联函数的代码必须在被替换之前已经生成被替换的代码。
  • 内联函数中,不能含有复杂的结构控制语句,如switch和while,如果内联函数有这些语句,则编译将该函数视同普同函数那样产生函数调用代码;另外,递归函数是不能被用来做内联函数的;内联函数只适合于只有1-5行的小函数。

5.默认参数的函数不清

  •     当又有声明又有定义时,定义中不允许默认参数。如:

                void point(int=3,int=4);

                void point(int x,int y)//定义中不允许再给出默认值。

               {

                }

  •       默认参数与函数重载

                  如果一组重载函数(可能带有默认参数)都允许相同实参个数的调用,将会引起调用的二义性。

总结:内联函数是为了提高编程效率而实现的,它克服了用#define宏定义所带来的弊病。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值