在c ++中初始化数组char

时间:2016-12-16 10:24:16

标签: c++ arrays visual-studio visual-studio-2012 char

以下方法是否正确初始化char数组?我在我的代码中多次使用它并在Visual Studio 2015中运行该程序不会显示任何错误。然而,当我在Visual Studio 2012中编译相同的程序时,我得到了很多错误,主要是使用char数组初始化。 那么,我的问题是可以初始化那种方式吗? Visual Studio 2012是否显示错误?

任何帮助都将受到高度赞赏!

char arr[10]={0};

2 个答案:

答案 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}}