初学,问个变量初始化的简单有关问题。
初学,问个变量初始化的简单问题。。。。
string global_str;
int global_int;
int main()
{
int local_int;
string local_str;
return 0;
}
出自C++Primer的习题2.17
全局str 和局部str 是调用了string的默认构造函数初始化为""这个可以理解
可为什么全局int 会初始化为0,而局部int却不会初始化?
------解决方案--------------------
放的地方不一样
------解决方案--------------------
------解决方案--------------------
我猜是标准里规定的?
------解决方案--------------------
哈哈,楼主不错,能想这么多,这么深。
虽然知道是这样的,但是原因还真是不清楚
全局变量是一起放在一个区段的,而临时变量只是栈空间里面的。。,也许初始化起来麻烦吧
------解决方案--------------------
string global_str;
int global_int;
int main()
{
int local_int;
string local_str;
return 0;
}
出自C++Primer的习题2.17
全局str 和局部str 是调用了string的默认构造函数初始化为""这个可以理解
可为什么全局int 会初始化为0,而局部int却不会初始化?
------解决方案--------------------
放的地方不一样
------解决方案--------------------
------解决方案--------------------
我猜是标准里规定的?
------解决方案--------------------
哈哈,楼主不错,能想这么多,这么深。
虽然知道是这样的,但是原因还真是不清楚
全局变量是一起放在一个区段的,而临时变量只是栈空间里面的。。,也许初始化起来麻烦吧
------解决方案--------------------
- C/C++ code
全局变量属于静态内存分配 根据ISO规定得知 在采用段式内存管理的架构中(比如intel的80x86系统),bss段(Block Started by Symbol segment)通常是指用来存放程序中未初始化的全局变量的 一块内存区域,一般在初始化时bss 段部分将会清零。bss段属于静态内存分配,即程序一开始就将其清零了。 而局部变量是根据你的编译器 有的编译器 会给未初始化的变量进行初始化,有的就不会!