2013-03-17 68 views
0

我是新使用C++和我有一段如下的代码我无法理解语法在C运营商新的++新的给我

from_net_fifos = new my_fifo_t <net_cmd_t> ** [NUM_PRIORITIES]; 

具体而言,我不明白什么**手段这里。

我从代码中得到了很多。

my_fifo_t是一个模板,net_cmd_t是这样一种类型,是一个结构,

所创建的FIFO数=优先级的数目,即,具有不同prirority每个消息都有自己的FIFO队列。所以基本上我们正在创建类型为net_cmd_t的fifo,即每个元素都是fifo中的这个结构类型。创建的fifos数量等于变量NUM_PRIORITIES

**在这里做什么? 有人可以纠正我,如果我错了,并解释这段代码的确切语法?

+1

真正的问题是为什么你有'my_fifo_t ***'。 – chris 2013-03-17 17:32:46

+0

@Chris无论谁写的是一个[三星程序员](http://c2.com/cgi/wiki?ThreeStarProgrammer),显然 – 2013-03-17 17:39:41

回答

5

星号*用于表示指针,并且该语句将指针分配给指向my_fifo_t的指针NUM_PRIORITES。你可以把它想象成一个指向my_fifo_t的指针数组的数组。

+0

所以新的内存是分配内存给一个指向fifos但不是fifo的指针数组本身?这条线是否也将内存分配给fifo? – nevermore 2013-03-17 17:32:40

+0

@ user2179788该语句仅为阵列的第一级分配内存。然后它需要像'from_net_fifos [i] = new my_fifo_t * [SOME_SIZE];'那样分配,并且该数组也需要初始化:'from_net_fifos [i] [j] = new my_fifo_t;'。 – 2013-03-17 17:35:05

+0

完美!这跟在它的代码中,现在我明白了......非常感谢:)(int p = 0; p * [num_ports]; – nevermore 2013-03-17 17:45:55