c++ - 数组不保存初始化值

标签 c++

我有一些非常简单的 C++ 代码来说明问题。我用构造函数中的值初始化我的数组。但是当我尝试访问 main 中的数组时,这些值被替换为随机数。为什么?

//Example to figure out why initialization values are disappearing
#include <iostream> 

struct Struct1
{
    float array1[2];

    //ctor
    Struct1();
};

Struct1::Struct1()
{
    float array1[] = {0.2,1.3};
}

int main()
{
    Struct1 StructEx;

    std::cout<<StructEx.array1[0]<<' ';
    std::cout<<StructEx.array1[1]<<std::endl;

    return 0;
}

最佳答案

正如@crashmstr 提到的,您没有初始化结构的成员,而是一个局部变量。以下代码应该可以工作:

struct Struct1
{
    float array1[2];
    //ctor
    Struct1();
};

Struct1::Struct1()
:   array1  ({0.2,1.3})
{
}

int main()
{
    Struct1 StructEx;

    std::cout<<StructEx.array1[0]<<' ';
    std::cout<<StructEx.array1[1]<<std::endl;

    return 0;
}

关于c++ - 数组不保存初始化值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45444546/

相关文章:

c++ - 用更好的替代品替换 reinterpret_cast?

c++ - 根据其成员子对象之一的地址计算对象的地址

c++ - 如何在opencv中为图像添加边框,边框颜色必须与图像颜色相同

c++ - 从另一个窗口上的控件获取文本时出现问题

c++ - cout string 和 c_str 在 C++ 中给出不同的值

C++:关于内存管理,指针本身是如何处理的?

c++ - 为什么以下 pop 函数不能在主机或设备 (cuda) 上运行?

c++ - 对 boost::locale:conv::between 的 undefined reference

c++ - 传递 const &object 与 const object 的区别

c++ - 递增迭代变量背后的直觉?