访问C中结构数组中的数组(结构成员)

时间:2017-08-04 15:47:09

标签: c++

我在结构数组中访问数组(结构成员)时遇到问题。 代码示例:

struct SV
{
    int station;
    double* tab;
    SV()
    {
     double* tab= new double[3];
    }

};

int main()
{
    SV* SUV = new SV[10];

    SUV[0].station = 10; // works
    SUV[0].tab[0] = 10; //  how it should be done?

    return 0;
}

如何访问此阵列?在C中有可能吗? 提前谢谢!

1 个答案:

答案 0 :(得分:3)

struct SV

struct SV
{
    int station;
    double* tab;
    SV()
    {
     double* tab= new double[3];
    }

};

在构造函数中,您执行:

double* tab= new double[3];

但是,您需要做的是:

tab= new double[3];

之前不是您想要的,因为它会在构造函数中创建一个名为tab new 数组,并且不会在您的类中初始化该数组。尝试索引此数组将调用未定义的行为,因为tab并未指向任何内容。这也会造成内存泄漏,因为本地数组不是delete d。

另一方面,您也可以在构造函数中执行此操作:

SV() : tab(new double[3]) {};

这将在构造函数中初始化tab,而不是分配给它。

作为旁注,我建议您查看std::vector 以简化您的任务。