函数常见问题

函数原型

即函数声明,告诉编译器有关函数接口的信息,编译器根据函数原型检测函数调用的正确性。由于函数原型没有实现代码,因此不需要参数名,只需要参数类型。

函数参数的传递机制

1.值传递
实际参数的值被赋值到形参,作为形参的初始化。函数体中对形参的访问修改都是在形参上操作的,与实际参数无关。若形参和实参类型不同,将对实参强制类型转换为形参类型,再赋值给形参。
2.引用传递
形参类型被定义为引用类型。函数被调用时,形参不需要开辟新的存储空间,形参名作为引用绑定于实际参数标识对象。执行函数体时,对形参的操作就是对实参的操作。函数结束,撤销引用绑定。
3.指针传递
形式参数被说明为指针类型。实际参数把对象的地址赋给形式参数标识的指针变量,在函数体内通过形参指针间接访问实参地址所指的对象。

函数的返回类型

1.基本类型
2.指针类型
不能返回局部变量的指针
3.引用类型

函数调用机制

  1. 嵌套调用
    按照上一次的运行状态,返回地址,接下来的函数参数依次压入堆栈中,每当一个函数运行结束时,弹出堆栈第一层信息,接收执行结果,恢复执行现场。
    如:main调用a,a调用b,b调用c,先把操作系统的运行状态,返回地址以及main函数的参数压入栈中,在main函数调用a时,将main的运行状态,返回地址,a函数的参数压入栈中,一直到c函数执行结束,弹出第一层信息,接受c的执行结果,回复b执行现场,继续执行b,依次类推,程序执行结束。
    2.递归调用
    递归调用之所以能实现,关键是系统使用堆栈保存函数调用的传值参数,局部变量和函数调用后的返回地址。函数自身进行递推:系统把有关参数和地址压入堆栈,一直递推到满足终止条件,找到问题的最基本模式为止,然后进行回归:系统图从堆栈逐层弹出有关参数和地址,执行地址所指向的代码,直到栈为空,得到问题的解。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值