永发信息网

为什么C语言函数中可以返回局部变量而不能返回局部

答案:4  悬赏:10  手机版
解决时间 2021-03-13 22:29
为什么C语言函数中可以返回局部变量而不能返回局部
最佳答案
这个从函数调用是堆栈的变化说吧,函数调用的时候,系统会将函数的返回地址、参数压入系统栈中,然后跳转到函数的代码区开始执行你函数里面写的代码。
这个时候,子函数才会去向系统申请堆空间存放你在这个函数中定义的变量,这些空间(变量)是有生命周期的,到这个子函数执行完毕,它的生命周期就结束了,申请的堆空间就会被释放,这个时候你指向它的指针当然是无效的;
而可以返回局部变量的原因是,你子函数的返回值(子函数局部变量),会被当作父函数的局部变量处理,它在堆中可以存放至父函数执行完毕,所以它是有效的.
全部回答
是可以返回全局变量而不能返回局部变量。因为全局变量的声明定义非本函数所有,本函数在返回的时候回释放函数自身声明定义的局部变量,而不能释放外部的全局变量。
你是想问: 为什么C语言函数中可以返回局部变量而不能返回局部指针?
这个从函数调用是堆栈的变化说吧,函数调用的时候,系统会将函数的返回地址、参数压入系统栈中,然后跳转到函数的代码区开始执行你函数里面写的代码,这个时候,子函数才会去向系统申请堆空间存放你在这个函数中定义的变量,这些空间(变量)是有生命周期的,到这个子函数执行完毕,它的生命周期就结束了,申请的堆空间就会被释放,这个时候你指向它的指针当然是无效的;而可以返回局部变量的原因是,你子函数的返回值(子函数局部变量),会被当作父函数的局部变量处理,它在堆中可以存放至父函数执行完毕,所以它是有效的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
用英语翻译一下:飞机虽然是最安全饿交通工具,
颁奖词怎么写
阜新宝地置业有限公司怎么去啊,有知道地址的
女生说江湖再见啥意思
泉眼的水能喝吗
大军水果食品商店地址有知道的么?有点事想过
枕着手机睡了一晚 怎么办
一首歌,里面有句歌词是这样的:小时候 爸爸
抢滩登陆2002不能玩了,不能按M
生记五金水电日杂店我想知道这个在什么地方
天猫闪迪亚百专卖店的 SanDisk/闪迪U盘cz48高
凌度280舒适版有定速巡航吗
下列划线字的注音全都正确的一项是(3分)A.
我家卧室床正对着路对面学校的大门口,这样好
厦门玉晶光电附近有其他工厂吗?
推荐资讯
几分的利息才算高利贷。
ffqq9nq5g5mq序列号苹果6是不是翻新机
多肉植物土壤配制技术
李国华老师和九口袋是什么关系?
linux系统swap交换分区的作用?
喝过白酒之后吃什么可以缓解酒量
有谁知道太阳能不上水到底是哪里出问题了?手
朱宁平价水果超市地址有知道的么?有点事想过
2009年的执业助理兽医师证现在还能用吗
jmeter4.0没有了工作台怎么办
姓王想叫晨什么??该起什么名字呢?
龙冈镇在哪里啊,我有事要去这个地方
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?