11个回答
展开全部
全局变量 、静态变量初始值为0,局部变量,自动变量初始值随机分配。
定义局部变量,其实就是在栈中通过移动栈指针来给程序提供一个内存空间和这个局部变量名绑定。因为这段内存空间在栈上,而栈内存是反复使用的,所以说使用栈来实现的局部变量定义时如果不显式初始化,值就是0的。
全局变量链接时已分配空间,程序运行时,操作系统的加载器,负责把链接器分配给全局变量的虚拟内存空间,映射到一个初始化为零的页面,所以被初始化为零。全局和静态的默认初始化都是靠加载机制实现的。另外:未初始化的符号在目标文件的bss段中,而初始化的符号在data段中。
扩展资料
c语言变量的存储类型,变量的初始化
存储变量值的内存类型,有普通内存、运行时堆栈、硬件寄存器。默认存储类型与变量声明位置有关:像全局变量这样代码块之外声明的变量存储在静态内存中,不在堆栈里,程序执行期间始终存在;
代码块内声明的变量默认存储类型是自动的(automatic),称为自动(auto)变量,存储在堆栈中,执行到代码块时被创建,代码块执行完即被销毁。
可以给自动变量加上关键字static,将它变为静态存储类型,它就会在程序运行期间一直存在,但是它的作用域是不变的,代码块外面还是不能用这个变量。
展开全部
C语言中,全局变量和局部静态变量是存储在静态存储区的,他们在分配的时候都被系统默认初始化为0;而局部自动变量是在栈上分配内存的,如果不对它们进行初始化,那么他们可能是任意的随机值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
普通的变量定义时未赋初值,那么系统赋予它一个随机垃圾值。如果static int a;即静态变量未赋初值,系统认为是0.
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这要看你定义的变量的属性
全局变量 静态变量初始值为0
局部变量,自动变量初始值随机分配
全局变量 静态变量初始值为0
局部变量,自动变量初始值随机分配
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
根据编译器而定,不同的编译环境是不同的。
有的是0, 有的是-1,有的是随机值。
有的是0, 有的是-1,有的是随机值。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询