我使用的结构是:
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的变量。 为什么会发生这种情况
答案 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
。
我不知道为什么你期望两行完全不同的代码来做同样的事情。