我正在处理一个函数,它接受一些值并找到值的最小值,最大值和平均值.我通过引用将所有内容传递给函数,并且当我尝试执行基本操作时遇到一些错误+,/即错误
二进制表达式的操作数无效('double*'和'double*')
void MinMaxAvg(double *pA, double *min, double *max, double *avg, int lines, double *total )
{
for (int i=0; i<lines; i++)
{
if ( i==0)
{
min = &pA[0];
max = &pA[0];
}
else
{
if (&pA[i] < min)
{
min = &pA[i];
}
if (&pA[i] > max)
{
max = &pA[i];
}
}
total += &pA[i]; //<-- Errors on this line
}
avg = (total / lines); // <-- Errors on this line.
}
Run Code Online (Sandbox Code Playgroud)
看起来你在那里混淆了一些类型.在您的示例中,您将指针设置为新值,而不是指针的值.
第一个必须是:
*total += pA[i];
Run Code Online (Sandbox Code Playgroud)
而第二个应该是:
*avg = (*total / lines);
Run Code Online (Sandbox Code Playgroud)
实际上,你可能想在第二个错误上使用浮点除法(有些编译器因在意外的地方使用整数除法而臭名昭着):
*avg = (*total / (double)lines);
Run Code Online (Sandbox Code Playgroud)
但是,如果你这样做,你仍会遇到错误.例如,&pA[i] > ...将导致指针比较,即将比较指针的地址.很可能不是你想要的.