使用指针表示法访问结构数组

Accessing a array of Structs using pointer notation

本文关键字:访问 结构 数组 表示 指针      更新时间:2023-10-16

我正在尝试自己学习C++,并尝试过这一点。我有一个结构,其中一个成员是另一个结构的数组。我有一个关于替代记法的问题。

我定义的结构是

struct employeeRecordT {
    string name;
    string title;
    string ssnum;
    double salary;
    int withholding;
};
struct payrollT {
    int num;
    employeeRecordT *array;
} payroll;

我使用以下构造将内存分配给工资单

payroll.array = new employeeRecordT[payroll.num];

其中payroll.num表示数组中元素的数量。我可以使用数组表示法访问employeeRecordT的元素名称,例如

payroll.array[i].title

我想知道如何使用指针表示法访问它,我已经尝试过

payroll.(array+i)->name = "Vikas";

我从g++得到以下错误消息

toy.cc:30:13:错误:在"("标记之前应为不合格的idtoy.cc:30:14:错误:未在此作用域中声明"array"

我正在努力理解我应该使用什么,为什么?你们能帮忙解释一下吗。

提前谢谢。

谨致问候,Vikas

(payroll.array+i)->name = "Vikas";

arraypayroll的成员,因此当您执行payroll.(array+i)时,括号表示法(即"先执行此操作")试图使用变量array,而不是payroll范围内的变量。

当然,使用C++,更好的解决方案是Neils。如果可能的话,使用std::矢量而不是您自己的动态分配存储。

如果很痛苦,不要这么做。请使用结构的std::向量。