c++ - 在 C++ 中明智地初始化 char 数组?

标签 c++ arrays initialization

我分别有一个类和一个结构,其成员变量类型为 std::array<char, 100>称为字符数组。我想明智地初始化这个数组。使用哪些值来初始化数组是明智的,执行此操作的最佳方法是什么?

我想我可以使用 std::fill()在构造函数中,但这是我真正应该这样做的方式吗?我的意思是因为初始化还是赋值?

谢谢。

最佳答案

一个简单的解决方案是将数组值初始化为类型的默认值。举个例子

struct Foo
{
    std::array<int, 10> bar;
    Foo() : bar({}) {}
};

此处 bar 将被初始化为全 0。您可以将其与

struct Bar
{
    std::array<int, 10> baz;
};

这将默认初始化 baz 并且其元素将具有不确定的值。你可以看到所有这些都在使用

struct Foo
{
    std::array<int, 10> bar;
    Foo() : bar({}) {}
};

struct Bar
{
    std::array<int, 10> baz;
};


int main(){
    Foo foo;
    for (auto e : foo.bar)
        std::cout << e << " ";
    std::cout << std::endl;
    Bar bar;
    for (auto e : bar.baz)
        std::cout << e << " ";
}

可能的输出:

0 0 0 0 0 0 0 0 0 0 
-917263728 4197632 4197632 4197632 4197632 4197632 6295552 0 4197581 0 

Live Example

关于c++ - 在 C++ 中明智地初始化 char 数组?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34730837/

相关文章:

Javascript 数组或对象

c++ - 这个函数的顶部发生了什么

c - 未指定长度的数组的问题

c++ - 用于存储 3D float 位置的莫顿代码

c++ - 两个输入函数的 T(n) 运行时间

c++ - 没有模板参数列表就不能引用类模板

C - 数组中的结构(以及一大堆其他问题)

c++ - 使用 reinterpret_cast 转换指针的段错误

arrays - 如何在 kotlin 中创建一个空数组?

java - java中的变量初始化