我在结构数组中访问数组(结构成员)时遇到问题。 代码示例:
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中有可能吗? 提前谢谢!
答案 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
至 以简化您的任务。