C语言局部变量问题?

局部变量按说当再次执行时是可以回初值的,可是我在C51编译器下试验,却发现如果不在定义时不给它赋初值,哪它当再次执行时是不会回初值的,这是怎么回事?... 局部变量按说当再次执行时是可以回初值的,可是我在C51编译器下试验,却发现如果不在定义时不给它赋初值,哪它当再次执行时是不会回初值的,这是怎么回事? 展开
 我来答
秋山木叶
2011-07-31 · TA获得超过197个赞
知道小有建树答主
回答量:178
采纳率:100%
帮助的人:93.5万
展开全部
局部变量的话,一般的定义就在局部里,如哪个函数内部,所以,每调用的时候都会先给它赋初值,分配内存再执行,等执行完毕,变量的内存将释放,那个局部变量自然就又不知道是多少去了,当你没有给变量赋初值的时候,那个初值是随机错误的一个数,所以一般在使用之前一定要先初始化。不然会出现不明的错误
q615600429040
2011-07-29
知道答主
回答量:15
采纳率:0%
帮助的人:12.6万
展开全部
C语言不赋值时会是系统给它分配内存时内存中的随机值,不像VB,VB不赋值系统默认给它的值为0,如果你退出函数,再进去时重新分配内存的话值就改变,按理来说C语言是先赋值后使用的,如果是局部变量应该是会报错的,除非你的全局变量中有它的声明和赋值。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
mia☆jiancha☆ce6608
2011-07-26 · TA获得超过1526个赞
知道小有建树答主
回答量:713
采纳率:100%
帮助的人:491万
展开全部
int f()
{
int a = 5;
return 1;
}
当执行一次结束后,变量a也就释放了,消失了,当再次执行时声明的a已经不是上次的a了,已经是再次声明的一个变量了,如果在换成这个static int a = 5;那么执行结束后,a不会释放,下次执行时还是这个a,且值是保存的,而不是重新声明一个
追问
可是当再次执行时,它的值并不是个随机值,而是上次的值。挺奇怪的,难道是没有用返回值结束的原因吗?
追答
你把代码贴来看看呢
如果是
int f()
{
int a = 5;
return 1;
}
每次执行程序,都是声明a=5;
如果是
int f()
{
int a ;
return 1;
}
那么每次a也都是一个固定的值,也不能叫随机值,反正没初始化的int型就是一个固定的值
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
第IX元素
2011-07-26 · TA获得超过384个赞
知道小有建树答主
回答量:457
采纳率:0%
帮助的人:324万
展开全部
没初始化当然不行
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
clitoriscn
2011-07-26 · TA获得超过3628个赞
知道小有建树答主
回答量:3258
采纳率:0%
帮助的人:1523万
展开全部
出始值本来就是随机值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(8)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式