我在一本书中看到了这个陈述。
new employee *[num];
其中employee已被声明为struct employee 和num是一个int;
这是声明中=运算符的右侧。
那么,这个陈述是什么意思? 这本书没有对上述陈述作出任何解释。
答案 0 :(得分:7)
这将分配一个内存,以便在免费商店中保存num
个employee
个指针。
e.g:
employee** a = new employee* [2]; // 2 pointers on the heap
堆:
address a (e.g. 0x97a0008): pointer1 to employee
address a + 1 ( 0x97a000c): pointer2 to employee
附注:您在数组上使用delete[]
,因此您可以使用delete[] a
BUT 删除上面的内容,如果已为其分配了内存,则必须首先遍历所有条目所以必须在松开指针之前释放它。
答案 1 :(得分:2)
认为是这样,
typedef employee* TEmployee;
TEmployee * ap = new TEmployee[10];
因此,它为大小为10的TEmployee(非员工)的动态数组分配内存。它很简单,
int * aip = new int[10];
TEmployee本身是员工的指针类型。