数组未保存初始化值

时间:2017-08-01 17:45:08

标签: c++

我有一些非常简单的c ++代码来显示问题。我用ctor中的值初始化我的数组。但是当我尝试在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;
}

2 个答案:

答案 0 :(得分:6)

正如@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;
}

答案 1 :(得分:1)

编译时打开警告(-Wall),您将看到

  • float array1[]={0.2,1.3};未使用
  • StructEx.array1[0]StructEx.array1[0]未初始化

在构造函数中放这个

array1[0]=0.2;
array1[1]=1.3;