使用指针表示法访问Structs数组

时间:2011-06-09 09:26:31

标签: c++

我正在尝试自己学习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:错误:在'('标记之前预期的非限定标识 toy.cc:30:14:错误:'array'未在此范围内声明

我想了解我应该使用什么以及为什么?你们能帮忙解释一下吗?

提前致谢。

此致 维卡斯

2 个答案:

答案 0 :(得分:7)

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

arraypayroll的成员,因此当您执行payroll.(array+i)时,括号表示法(即“首先执行此操作”)尝试使用变量{{1} },而不是array范围内的那个。

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

答案 1 :(得分:5)

如果疼,不要这样做。改为使用结构的std :: vector。