【问题标题】:Initialisation of array char in c++在 C++ 中初始化数组 char
【发布时间】:2017-05-02 02:53:58
【问题描述】:

下面的方法初始化一个 char 数组是否正确?我在我的代码中多次使用它,并且在 Visual Studio 2015 中运行该程序没有显示任何错误。而当我在 Visual Studio 2012 中编译相同的程序时,我得到了很多错误,主要是 char 数组初始化。 所以,我的问题是可以这样初始化吗? Visual Studio 2012 是否显示错误错误?

任何帮助将不胜感激!

char arr[10]={0};

【问题讨论】:

  • 它向您显示什么错误?
  • 这没有什么问题。如果您遇到任何错误,您的代码可能比那行代码要多,并且较早的错误导致了著名的 C++ 级联错误。

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


【解决方案1】:

在 C++11 及更高版本(由 Visual Studio 2015 广泛实现,几乎没有遗漏),您可以更进一步并编写

char arr[10] = {};

这会将arr 的每个元素设置为'\0'

如果可以的话,我很想放弃对 VS2012 的编译支持(它并不声称要实现 C++11 标准):C++11 标准是开发中的一个重要飞跃C++。也就是说,char arr[10] = {0}; 是有效的 C++03,您的编译错误是由于代码中的其他错误造成的。

【讨论】:

    【解决方案2】:

    在 C++11 中

    {}

    用于“聚合初始化”

    聚合是 Arryas、Classes(structs) 和 unions。它消除了在它之前的情况下初始化数组和类的繁琐方式。空的聚合初始化用于用零初始化所有内容

    例如

    char arr[5] = {}
    

    将 arr[0] 初始化为 arr[4] 为 0

    struct s {
        int i;
        int j;
    };
    struct s s1 = {};
    // make s1.i = s1.j = 0;
    

    聚合也可以用于初始化,例如

    char str[] {"Test String"};
    // This is equivalent to 
    char str[] = "Test String";
    

    一个简单的整数或任何其他内置数据类型也可以像这样初始化

    int val { 123 };
    

    // 相当于 整数值 = 123;

    它也广泛用于 STL 初始化。例如

    std::array<int, 3> ay{ 1,2,3 };
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-09-12
      • 1970-01-01
      • 2014-02-02
      • 2021-04-15
      • 1970-01-01
      • 2012-10-23
      • 2016-11-21
      • 2023-03-17
      相关资源
      最近更新 更多