函数和递归

1、函数嵌套

         

2、assert函数

include<assert.h>

         形参表填写逻辑或关系表达式,若为假立即终止程序。

3、函数的特性

  函数传递都是值传递,而不是修改内存空间,形参的值是开辟另外一个与实参大小相同的          内存空间并把实参的值复制进去,修改也只是修改形参空间的值,不影响实参。

             实质:不能在被调函数中修改主调函数的值

             函数传参的顺序自右向左

                 

                                先打印20,再打印10

            不允许在函数传参中对变量进行自增、自减,否则会出现错误。

                 

3、从编译器,底层逻辑看函数怎么调用的

    主函数执行到函数时会跳转到函数中开始执行,在执行到return后,返回主函数继续执行。

            

1.栈区

       

              pc寄存器存放将要执行的代码地址   

               pc进入函数后无法返回函数调用处,就产生了栈

              原则:先进后出,后进先出

             入栈叫做保护现场,出栈叫做恢复现场

                定义的变量储存在栈区

2.堆区

     堆区使用需要向操作系统借,使用完需要归还

     大小取决于内存条大小

字符串常量区:存储字符串常量,相同的字符串常量只会存储一次,节省内存。

代码区:存储可执行代码,这段内存只读,防止代码被意外修改。

静态区:存放全局变量,方便调用,还有可能包含程序的初始化数据。

3.函数递归(循环)

        函数递归:函数直接或间接调用自己本身

无条件的函数自身调用会导致栈区消耗殆尽而程序崩溃

递归计算1~100

计算斐波那契数列第n个数

求斐波那契数列前n项数和:

  • 9
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值