我对这个语法感到很麻烦。
问题是:
使用在运行时动态分配的结构数组计算名称出现的直方图
我用这种方式解决了它(我更喜欢使用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。关于我的代码编写方法的任何建议都是受欢迎的。
答案 0 :(得分:2)
您的代码是正确的。实际上,array是指向它的第一个元素的指针,这就是你从新运算符中得到的。
即使您有像
这样的代码const int n = 5;
hi vet[n];
// ...
printHistogram(vet, n);
它仍然是正确的。根据c ++标准的4.2段,
“N T数组”或“未知数组的数组”的左值或右值 T“可以转换为”指向T“的prvalue类型。结果 是指向数组第一个元素的指针。