函数的递归调用的学习

函数参数和函数的值

一、形式参数 和 实际参数

1.调用函数时,主调函数和被调函数之间又数据传递关系,这是有参函数;

2.在定义韩式时函数名后面括号中的变量名称为形参

3.主调函数中调用一个函数时,函数名后面括号中的参数为实参

4.实参和形参有着不同的内存空间,无法在被调用函数中去修改实参的数值;

调用函数时的返回值类型应该与子函数前的数值类型一致;

被调函数无法向主调函数反馈错误,一般用返回-1的方法让主函数来判断错误;

引用assert(  )命令可以提前终止程序;

值传递,仅仅只是把变量的值传递到子函数中去;

参数的传递方式

自左向右

在传参时不能对同一个参数进行自加或者自减;

二、有关栈

子函数从被调用时开始跳转,第一条指令被称为入口地址;

子函数被暂时保存在栈中去,遵循FILO原则,先进后出,后进先出的原则

分为入栈和出栈两个行为,

向子函数跳转时,会先向栈入住一个主函数该处的地址,执行到return时,进入栈返回到主函数、

栈所在的内存空间被称为“栈区“;栈区的内存是有限的;

一些相关的存储区域

堆区:需手动申请和销毁,取决于物理内存的大小

字符串常量区:字符串存放的地方

静态区也称为全局区:专门存储那些与进程有关的变量和初始化的常量;

代码区 用于存放代码的地址区域;

栈帧 一块一块的栈组成的区域;

三、函数的嵌套调用

在一个函数中又调用另一个函数

不能嵌套定义函数,但可以嵌套调用

四、函数的递归调用

函数嵌套调用的一种特殊形式

分为间接递归调用和直接递归调用

直接递归调用不等于死循环,无条件的函数递归调用会把栈区消耗殆尽,进而到导致程序崩溃

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值