动态分配结构数组的麻烦

时间:2016-02-01 00:17:25

标签: c++

我使用的结构是:

struct Employee {
    char firstName[10];
    char lastName[10];
    char SSN[11];
    double wage;
    int hours;
    char workerStatus;
};

尝试创建数组时,我可以

Employee workers[11];

它将创建一个由11名员工组成的阵列

然而,当我尝试

Employee* workers = new Employee[11];

它只会给我一个名为workers的变量。 为什么会发生这种情况

1 个答案:

答案 0 :(得分:3)

  

为什么会发生这种情况

因为这就是你要求你的计算机发生的事情。

事实上,在两个案例中,您有一个名为workers的变量。

Employee* workers = new Employee[11];

在这里,您要求它创建一个变量workers,一个类型为Employee*的指针,并使其指向动态分配的11个Employee对象块。

Employee workers[11];

在这里,您要求它创建一个变量workers,一个类型为Employee[11]的数组。

在这两种情况下,底层数据由11 Employee组成,但在指针的情况下,Employee的数量不会被烘焙到该类型中。这就是为什么你的调试器不能同时自动显示所有Employee:它不知道有多少!它只能显示Employee指向当前worker。但您可以安全地增加worker十次以查看其他Employee

我不知道为什么你期望两行完全不同的代码来做同样的事情。