|
发表于 2023-12-9 22:51:47
|
显示全部楼层
[b]在C语言中没有引用参数, `'&'` 是获取变量的地址, 并非引用. C++ 才有引用.
保持函数 `void createHFTree(HFTree& HT, char value[], int fr[], int n)` 在语法结构上不变,只能在C++环境下运行。
但在你的代码中看起来你希望传递一个`HFTree`的数组。
在C++中,你应该这样声明你的函数:`void createHFTree(HFTree HT[], char value[], int fr[], int n)`.
这样函数就能正确的接收一个 `HFTree`数组了。
然后在‘main’函数中,你可以直接传递 `HT` :
`createHFTree(HT, characters, weights, n);`
对于你的代码,需要做如下更改:
对于 `createHFTree` 的定义改为 `void createHFTree(HFTree HT[], char value[], int fr[], int n)`
调用 `createHFTree` 改为 `createHFTree(HT, characters, weights, n);`
注意: `&HT[lnode]` 和 `&HT[rnode]` 都会产生`HFTree*`类型的结果,所以你的lchild, rchild, parent成员变量应更新为`HFTree*` 类型。
而且, 在 C++ 中一般建议使用 `new/delete` 来分配和释放内存,而不是 `malloc/free` 。所以,建议你使用 `new` 来创建 `HT`,并在最后使用 `delete []` 来释放内存。
求最佳答案 [/b] |
|