错误:一元'*'的无效类型参数

时间:2014-04-07 03:10:01

标签: c++ arrays pointers

我不明白这些错误可以解释一下吗?

错误:一元''的无效类型参数(有'double') 错误:一元''的无效类型参数(有'double') 错误:一元'*'的无效类型参数(有'double')

    double getMedian(double *array, int *hours){
    if (*hours <= 0) return 0;
    if (*hours % 2) return (float)*array[(*hours + 1) / 2];
    else{int pos = *hours / 2;
    return (float)(*array[pos] + *array[pos + 1]) / 2;}}

3 个答案:

答案 0 :(得分:6)

您已经使用array运算符取消引用[]。你想要的是:

double getMedian(double *array, int *hours){
if (*hours <= 0) return 0;
if (*hours % 2) return (float)array[(*hours + 1) / 2];
else{int pos = *hours / 2;
return (float)(array[pos] + array[pos + 1]) / 2;}}

请注意,撰写x[y]*(x + (y))的简写。在您的代码中,您基本上具有等效于**array

答案 1 :(得分:2)

在数组或指针上使用[]运算符时,不必再次取消引用它们以获取值。 你可以这么说,

if (*hours % 2) return (float)array[(*hours + 1) / 2];

return (float)(array[pos] + (array[pos + 1]) / 2);

答案 2 :(得分:1)

*array[(*hours + 1) / 2];所以array是一系列双打。您将其视为2D数组,因为您尝试通过*[]取消引用一次。

另外,我会在所有这些内容中添加一些(),以便在不记住操作顺序的情况下使其更清晰。