C语言局部变量问题?
局部变量按说当再次执行时是可以回初值的,可是我在C51编译器下试验,却发现如果不在定义时不给它赋初值,哪它当再次执行时是不会回初值的,这是怎么回事?...
局部变量按说当再次执行时是可以回初值的,可是我在C51编译器下试验,却发现如果不在定义时不给它赋初值,哪它当再次执行时是不会回初值的,这是怎么回事?
展开
10个回答
展开全部
C语言不赋值时会是系统给它分配内存时内存中的随机值,不像VB,VB不赋值系统默认给它的值为0,如果你退出函数,再进去时重新分配内存的话值就改变,按理来说C语言是先赋值后使用的,如果是局部变量应该是会报错的,除非你的全局变量中有它的声明和赋值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
int f()
{
int a = 5;
return 1;
}
当执行一次结束后,变量a也就释放了,消失了,当再次执行时声明的a已经不是上次的a了,已经是再次声明的一个变量了,如果在换成这个static int a = 5;那么执行结束后,a不会释放,下次执行时还是这个a,且值是保存的,而不是重新声明一个
{
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型就是一个固定的值
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
没初始化当然不行
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
出始值本来就是随机值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询