c - 功能参数差异

标签 c function pointers function-pointers

这里有两个相同的代码,但具有不同的函数参数,但它们似乎输出相同的东西。

void get_rate_drop_factor(int *rate_ml, int *drop, int *drop_per_min)
{
    printf("Enter rate in ml/hr=> ");
    scanf("%d", rate_ml);
    printf("Enter tubin's drop factor(drop/ml)=> ");
    scanf("%d",drop);
    *drop_per_min = (*rate_ml / 60) * *drop;
    printf("The drop rate per minute is: %d\n\n", *drop_per_min);

}

据我了解,参数中带有“*”的变量是输出参数。

void get_rate_drop_factor(int *drop_per_min)
    {
        int rate_ml, drop;
        printf("Enter rate in ml/hr=> ");
        scanf("%d", &rate_ml);
        printf("Enter tubin's drop factor(drop/ml)=> ");
        scanf("%d",&drop);
        *drop_per_min = (rate_ml / 60) * drop;
        printf("The drop rate per minute is: %d\n\n", *drop_per_min);

    }

当我调用该函数时,这两个代码似乎输出相同的内容。那么“*”对于参数到底有什么作用呢? 我认为我没有完全理解参数的概念。

请详细解释一下,因为我真的很想学习这个,但这真的很令人沮丧。

最佳答案

from what I learned, those variables with '*' in the parameters are output parameters.

您正确地指出此类参数是输出参数。

因此,在第一个函数中,所有三个参数都是输出参数。

在第二个函数中只有一个输出参数。因此函数的调用者无法获取用户在函数中输入的rate_mldrop的值。

因此,如果函数的调用者需要获取所有三个值,他应该使用第一个函数声明。如果他只需要结果计算的值,他应该使用第二个函数声明。

关于c - 功能参数差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60178888/

相关文章:

c - P 线程 - 从不同大小的整数转换为指针

javascript - 了解 JS 函数语法(我相信也适用于其他语言)

不使用 strcpy 复制字符串

C编程: logarithmic index array

c - 洗牌数组

jquery - Crystal 选择在第一次赢或输后记为输

c++ - 指向类的双指针

C++制作指向const对象的指针数组

c - 扫描以 32 个十六进制值表示的 128 位输入

php - WordPress 'If' 声明