c - 我传递指针参数的方式有什么问题吗?

标签 c function pointers

问题不是什么大问题,但我不确定我是否缺乏理解给我的特定评论的知识。

这是我必须使用指针的作业的一部分。

我收到了我的导师关于函数 returnfunc 的一段代码的评论,其中使用了指针。

注释如下:“函数有什么输入/输出?只有判断点进来!”

我会要求进一步澄清,但讲师在接下来的 1-2 天内无法使用。

所以我没有等待,而是希望有人可以看一看,也许可以确定这是什么意思?

代码中突出显示的部分如下所示:

//function declaration
void returnfunc(float *low, float *average, float *high,  float array[],int judges);

//calling function in the main function
returnfunc(&low, &average, &high, pointArray,judges);


//code for returnfunc function
void returnfunc(float *low, float *average, float *high, float pointArray[],int judges){

    float small =pointArray[0];
    float large =pointArray[0];
    float total;

    for(int i =0;i<judges;i++){
        if(small>pointArray[i]){
            small = pointArray[i];
        }
        if(large<pointArray[i]){
            large = pointArray[i];
        }
    }


    for(int i = 0;i<judges;i++){
        total += pointArray[i];
    }

    *average = (total-(large+small))/(judges-2); //average without largest and smallest value
    *high=large;
    *low=small;

}

judges 是用户选择的判断数量。

pointArray 是一个数组,其中包含每个裁判给出的分数。

我对代码的解释是,输入是lowhighaverage 的地址以及pointArrayjudges

然后输出将是 averagehighlow 的更新变量

你会说这是正确的吗?

最佳答案

是的。我的猜测是,您的导师希望您拥有三个独立的功能,一个用于查找最低分数,一个用于查找最高分数,一个用于查找没有最低和最高分数的平均值。这将允许每个函数直接返回一个结果。

void returnfunc(float *low, float *average, float *high, float pointArray[],int judges)
{
    float small =pointArray[0];
    float large =pointArray[0];
    float total;

    for(int i =0;i<judges;i++){
        if(small>pointArray[i]){
            small = pointArray[i];
        }
        if(large<pointArray[i]){
            large = pointArray[i];
        }
    }


    for(int i = 0;i<judges;i++){
        total += pointArray[i];
    }

    *average = (total-(large+small))/(judges-2); //average without largest and smallest value
    *high=large;
    *low=small;
}

一个吹毛求疵的问题:为什么要遍历 pointArray两次 for当你可以在一个循环中完成所有事情时循环?

还有一个吹毛求疵的问题:虽然 small>pointArray[i]pointArray[i] < small 含义相同,我认为后者更好地传达了代码的意图。

还有一个错误:你没有设置 total在开始向其中添加内容之前将其归零。你可以设置 totalpointArray[0]以及开始,然后从一个开始循环。

关于c - 我传递指针参数的方式有什么问题吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56658056/

相关文章:

c - 如何打印 C 中方程式的答案?

javascript - Angular : service. setData 不是函数

c++ - 我什么时候使用哪种指针?

c++ - 将 char 指针分配给数组

c - 为什么 grep 给出 "Binary file (standard input) matches"?

c++ - 需要帮助为 Arduino 创建无限数组 (c/c++)

c - C Socket编程中的多个客户端

python - 在一个函数中获取输入并在另一个函数中调用它

python - 当我运行这个时,我得到一个 "None"来回答而不是我的问题

c - 将参数(结构体数组中的结构体)传递给 C 中的函数