C++数组初始化不起作用

标签 c++ arrays gcc

我正在尝试像这样初始化一个 bool 数组:

bool FcpNumberIsOk[MAX_FCPS]={true};

但是当我调试它时,我只看到数组的第一个元素被初始化了,其他的都是假的。怎么会这样?我在 ubuntu 10 上使用 Qt,初始化是在方法内的本地数组上完成的。

好的,谢谢您的回答。

最佳答案

你误会了。您似乎认为任何未提及的元素都将被初始化为与最后一个显式初始化值相同的值。您提到的最后一个值是 true,因此所有其他元素也将被初始化为 true。我曾经有过同样的信念,但我很快就了解到并非如此。

这不是它的工作原理。任何未提及的元素都会被默认初始化,对于 bool 意味着 false

要将所有元素设置为 true,请尝试类似 std::fill_n 的操作:

std::fill_n(FcpNumberIsOk, MAX_FCPS, true);

关于C++数组初始化不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3603206/

相关文章:

c++ - 使用 thunk 从 cdecl 转到 thiscall (Linux x86)

gcc - 使用 Cmake 的混合语言 C++、C 和 Fortran 编译

c++ - 我们应该在 C++ 类中指定 "private"标签吗?这有什么区别吗?

android - 我想知道cv error的意思

javascript - 将用户推送到数组时,会创建多个数组

c - 在c中使用calloc分配3维数组的内存

c++ - 无法在 x64 中构建 gdal

c++ - 在没有赋值的情况下调用 std::move() 时会发生什么

javascript - 分割字符串会导致无限循环

c - __attribute__((always_inline)) 失败