在C++中合理地初始化字符数组

Init char array sensibly in C++?

本文关键字:初始化 字符 数组 C++      更新时间:2023-10-16

我有一个类和一个结构,该结构具有一个名为charArray的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 

实时示例