c语言函数调用结束后返回,当函数执行完毕后,如何返回调用处?

周立功教授数年之心血之作《程序设计与数据结构》以及《面向AMetal框架与接口的编程(上)》,书本内容公开后,在电子行业掀起一片学习热潮。经周立功教授授权,本公众号特对《程序设计与数据结构》一书内容进行连载,愿共勉之。

第二章为程序设计技术,本文为2.3 栈与函数返回。

当函数执行完毕后,如何返回调用处呢?由于该函数可能会被多次调用,且每次调用的地方很可能不一样,这样被调用函数也就不可能知道自己该返回到哪里,因此在调用函数时必须告诉被调用函数应返回到哪里?

>>>2.3.1 堆栈

为了保存变量(数据),通常计算机会提供非常多的内存。为了便于管理内存,将所有变量使用的内存称为栈,而将未分配的内存区域称为堆。这些未分配的内存区域,程序员可以块为单位请求它。这部分内存是由操作系统管理的,一旦一块内存被分配出去,它只能由分配了这块内存的原始代码使用,并使用指针访问这块内存。由于内存是稀缺资源,当程序不再需要该内存时,都应该释放回去。如果不这样做,程序将会耗光内存,导致运行速度下降甚至崩溃。这就是因为程序员没有释放本应释放的内存,造成了所谓的内存泄漏。

堆和栈是两种常用的数据结构,主要用于数据的动态存储。当程序执行时,栈中存储的是程序的执行过程,比如,main()函数的局部变量argc和argv都在栈中,而使用malloc()函数动态分配的内存是存储在堆中的,堆栈共享同一块内存区域。通常程序栈占据这块区域的下部,而堆用的是上部。当调用函数时,函数的栈帧被推到栈上,栈向上“长出”一个栈帧。当函数终止时,其栈帧从程序栈弹出。虽然栈所使用的内存不会被清理

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值