鱼C论坛

 找回密码
 立即注册
查看: 562|回复: 2

[已解决]定义字符串数组后的初始化问题

[复制链接]
发表于 2020-4-21 20:12:23 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能^_^

您需要 登录 才可以下载或查看,没有账号?立即注册

x
首先我 char s[20]; 并没有初始化它,调试的时候发现S字符串内部不干净。
EBXC6E@Y4[J3ZFL8L}M~CWB.png
如果未初始化就对其赋值容易产生问题,例如如图。

对S的前8位赋值为i

对S的前8位赋值为i

可以发现如果不对字符串初始化就进行赋值,容易产生问题。

但是我在另一个程序中,创建一个结构体,里面包含一个字符数组,也没有进行初始化,可是调试的时候发现其内部空间很干净,不影响后续的赋值。这是为什么呢?
如图
%W4(R])M](N3V]D1B`}7L8C.png

还有,如果对结构体中的字符数组初始化例如:
struct NODE{
        char name[20]={'0'};
        char password[20]={'0'};
}node[101],ans[101];

程序能正常运行,但是会warning。
[Warning] non-static data member initializers only available with -std=c++11 or -std=gnu++11
[Warning] extended initializer lists only available with -std=c++11 or -std=gnu++11
这是为什么?
最佳答案
2020-4-21 22:12:09
QQ截图20200421220825.png
我觉得是你的参照物比对错了
一般局部变量“不干净点”,因为共用一个堆栈
变量在函数外全局区定义,似乎编译器会默认初始化为0;
至于第三个问题
结构体声明的时候是不能初始化,好像是一个规定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复

使用道具 举报

发表于 2020-4-21 22:12:09 | 显示全部楼层    本楼为最佳答案   
QQ截图20200421220825.png
我觉得是你的参照物比对错了
一般局部变量“不干净点”,因为共用一个堆栈
变量在函数外全局区定义,似乎编译器会默认初始化为0;
至于第三个问题
结构体声明的时候是不能初始化,好像是一个规定
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

发表于 2020-4-22 09:39:13 | 显示全部楼层
全局变量会自动初始化为0,局部变量不会。
想知道小甲鱼最近在做啥?请访问 -> ilovefishc.com
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|鱼C工作室 ( 粤ICP备18085999号-1 | 粤公网安备 44051102000585号)

GMT+8, 2024-4-28 05:35

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

快速回复 返回顶部 返回列表