定义字符串数组后的初始化问题
首先我 char s; 并没有初始化它,调试的时候发现S字符串内部不干净。如果未初始化就对其赋值容易产生问题,例如如图。
可以发现如果不对字符串初始化就进行赋值,容易产生问题。
但是我在另一个程序中,创建一个结构体,里面包含一个字符数组,也没有进行初始化,可是调试的时候发现其内部空间很干净,不影响后续的赋值。这是为什么呢?
如图
还有,如果对结构体中的字符数组初始化例如:
struct NODE{
char name={'0'};
char password={'0'};
}node,ans;
程序能正常运行,但是会warning。
non-static data member initializers only available with -std=c++11 or -std=gnu++11
extended initializer lists only available with -std=c++11 or -std=gnu++11
这是为什么?
我觉得是你的参照物比对错了
一般局部变量“不干净点”,因为共用一个堆栈
变量在函数外全局区定义,似乎编译器会默认初始化为0;
至于第三个问题
结构体声明的时候是不能初始化,好像是一个规定 全局变量会自动初始化为0,局部变量不会。
页:
[1]