C语言中子函数中变量只能用于子函数?

例如:intmax(intx,inty){intz;z=x>y?c:y;teturn(z);}那么我想问的是这个Z是子函数中声明的,那么它只能用在子函数?也就是说当程序跳... 例如:int max(int x ,int y)
{
int z;
z=x>y?c:y;
teturn(z);
}那么我想问的是这个Z是子函数中声明的,那么它只能用在子函数?也就是说当程序跳出子程序那么Z就不起作用了?为什么?
还有对于形参X,Y在(int x,int y)就是对形参的申明吗?
展开
 我来答
zhoufeng123d
2012-12-04
知道答主
回答量:36
采纳率:0%
帮助的人:19.1万
展开全部
楼上的回答都没说到关键,这个问题该从内存管理上来讲,在C语言中内存分配有3中方式,1.从静态存储区(有的人也称之为全局区),2.栈区,3.堆区(亦动态内存分配区)。静态存储区存放的是全局变量,static变量,const变量,编译时由编译器分配。程序结束时由编译器释放,所以全局变量在整个程序运行期间都是有效的。2栈区,主要存放局部变量,楼主函数中的int z;就是在栈区分配的内存,栈区会在函数执行结束是释放,即楼主方法max()结束后释放。3.堆区:手动申请(malloc方法等...),手动释放(free方法等...),第二个问题,这里不是声明,只是签名就是说在调用是要与之签名相同,也有两个参数。
寂寞而莫我知也
2012-12-04 · TA获得超过284个赞
知道小有建树答主
回答量:347
采纳率:0%
帮助的人:228万
展开全部
形参只是一个逻辑上的申明,实际上没有分配内存。z跳出子程序确实就不起作用了。因为他是函数作用域。但是max函数返回的一个值是确实存在的。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
双枪老椰子
2015-06-09 · TA获得超过5.5万个赞
知道大有可为答主
回答量:5797
采纳率:93%
帮助的人:1741万
展开全部

  例如:int max(int x ,int y)
{
int z;
z=x&gt;y?c:y;
teturn(z);
}那么我想问的是这个Z是子函数中声明的,那么它只能用在子函数?也就是说当程序跳出子程序那么Z就不起作用了?为什么?
还有对于形参X,Y在(int x,int y)就是对形参的申明吗?

  这个问题该从内存管理上来讲,在C语言中内存分配有3中方式,

  1. 从静态存储区(有的人也称之为全局区),

  2栈区,主要存放局部变量,楼主函数中的int z;就是在栈区分配的内存,栈区会在函数执行结束是释放,即楼主方法max()结束后释放。

  3.堆区:手动申请(malloc方法等...),手动释放(free方法等...),

  第二个问题,这里不是声明,只是签名就是说在调用是要与之签名相同,也有两个参数。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
上帝来自地球
2012-12-04 · TA获得超过1436个赞
知道小有建树答主
回答量:438
采纳率:100%
帮助的人:406万
展开全部
1.第一个对,当程序对出子函数int max(int x ,int y),z所占用的空间就归还给系统堆栈了,这个空间就被系统用作它用了!
2.第二怎么来说呢,可以说声明也可说定义,就看它出现的位置是在函数声明部分还是函数定义部分了,反正就是确定形式参数的类型!
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
llqbbd
2012-12-04 · TA获得超过194个赞
知道答主
回答量:122
采纳率:100%
帮助的人:50.2万
展开全部
Z在子函数中声明,其生存期只在子函数中,跳出去Z就不复存在了。可以说形参就是其声明。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(5)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式