动态分配struct数组

时间:2011-12-13 20:00:11

标签: c++ arrays struct memory-management

我对这个语法感到很麻烦。
问题是:
使用在运行时动态分配的结构数组计算名称出现的直方图 我用这种方式解决了它(我更喜欢使用pastebin来避免在这里粘贴太多代码):

main.cpp http://pastebin.com/TD6Y2Acf
dinalloc.cpp http://pastebin.com/93eM9EdL
dinalloc.h http://pastebin.com/bUX7TxTs

它有效,但我不明白为什么......
我声明了一个名为hi的结构体和一个名为vet的结构数组。当我在 dinalloc.cpp 中声明函数参数时,我必须写hi *vet。通过这种方式,这意味着我要求函数期望指向hi结构的指针?相反,当我调用该函数时,我将vet作为参数,即hi结构的数组。 这段代码的工作原理如何?

P.S。关于我的代码编写方法的任何建议都是受欢迎的。

1 个答案:

答案 0 :(得分:2)

您的代码是正确的。实际上,array是指向它的第一个元素的指针,这就是你从新运算符中得到的。

即使您有像

这样的代码
const int n = 5;
hi vet[n];
// ...
printHistogram(vet, n);

它仍然是正确的。根据c ++标准的4.2段,

  

“N T数组”或“未知数组的数组”的左值或右值   T“可以转换为”指向T“的prvalue类型。结果   是指向数组第一个元素的指针。