以下方法是否正确初始化char数组?我在我的代码中多次使用它并在Visual Studio 2015中运行该程序不会显示任何错误。然而,当我在Visual Studio 2012中编译相同的程序时,我得到了很多错误,主要是使用char数组初始化。 那么,我的问题是可以初始化那种方式吗? Visual Studio 2012是否显示错误?
任何帮助都将受到高度赞赏!
char arr[10]={0};
答案 0 :(得分:1)
在C ++ 11及更高版本中(由Visual Studio 2015广泛实现且几乎没有遗漏),您可以进一步发展并编写
char arr[10] = {};
这会将arr
的每个元素设置为'\0'
如果你能够:C ++ 11标准是一个重要的飞跃,我很想放弃对VS2012的编译支持(它并不意味着实现C ++ 11标准)在C ++的开发中。也就是说,char arr[10] = {0};
是有效的C ++ 03,您的编译错误是由于代码中的其他错误造成的。
答案 1 :(得分:1)
在C ++ 11中
char arr[5] = {}
用于"聚合初始化"
聚合是Arryas,Classes(结构)和联合。它取出了初始化数组和类的繁琐方法,这是之前的情况。空聚合初始化用于初始化零
的所有内容例如
struct s {
int i;
int j;
};
struct s s1 = {};
// make s1.i = s1.j = 0;
将arr [0]初始化为arr [4],0
char str[] {"Test String"};
// This is equivalent to
char str[] = "Test String";
聚合也可用于使用
等值进行初始化int val { 123 };
简单整数或任何其他内置数据类型也可以初始化为
std::array<int, 3> ay{ 1,2,3 };
//相当于 int val = 123;
它也广泛用于STL初始化。例如
{{1}}