2014-06-22 201 views
0

我在一本书中遇到了这个声明。声明新员工声明是什么意思* [编号] C++

new employee *[num]; 

那里的员工已经被宣布为员工结构和 NUM是一个int;

这是在语句的=操作符的右侧。

那么,这个陈述是什么意思? 该书不提供任何关于上述声明的解释。

+0

它分配一个大小为num的新员工*数组。返回值从未被捕获。 – Ben

+2

IMO这是一个为什么*应该与其余类型一起使用的例子。 – Ben

+0

这是为'员工'创建一个'num'指针的数组。 – haccks

回答

7

这将分配一个所需的内存,以在免费商店中容纳num指向employee的指针数量。

如:

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上述删除但你必须首先循环通过,如果所有条目你已经为它们分配了内存,所以在你松开指针之前它必须被释放。

https://stackoverflow.com/a/13477214/1141471

+0

好的,我对*感到困惑。所以这里我们使用new来在运行时初始化指针。谢谢。 –

+0

[s/ie/eg /](http://public.wsu.edu/~brians/errors/e.g.html) – Hiura

+0

@Hiura非常感谢你 – 4pie0

2

认为它是这样的,

typedef employee* TEmployee; 
TEmployee * ap = new TEmployee[10]; 

因此,它为大小为10型TEmployee(未雇员)的动态数组分配内存。它是一样简单的,

int * aip = new int[10]; 

TEmployee本身是一个指向员工的指针类型。

+0

这是一个非常好的解释!谢谢。 –

相关问题