茶叶仓鼠 发表于 2020-4-21 20:12:23

定义字符串数组后的初始化问题

首先我 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
这是为什么?

4goodworld 发表于 2020-4-21 22:12:09


我觉得是你的参照物比对错了
一般局部变量“不干净点”,因为共用一个堆栈
变量在函数外全局区定义,似乎编译器会默认初始化为0;
至于第三个问题
结构体声明的时候是不能初始化,好像是一个规定

chxchxkkk 发表于 2020-4-22 09:39:13

全局变量会自动初始化为0,局部变量不会。
页: [1]
查看完整版本: 定义字符串数组后的初始化问题