我在访问结构数组中的数组(结构成员)时遇到问题。 代码示例:
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 中有可能吗? 提前致谢!
最佳答案
在您的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
大大简化您的任务。
关于c++ - 访问 C 中结构数组中的数组(结构成员),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45510899/