将变量直接传递到C中的函数?

将变量直接传递到C中的函数?,c,scanf,C,Scanf,例如,假设我有一个函数双重计算(双重输入)它接受输入并向其添加5.0,然后返回值 假设我想接受用户输入。好的,创建一个变量用于scanf,将其命名为double temp。然后scanf(“%lf”、&temp)最后我们使用函数calculate(temp) 是否有任何方式将直接输入到函数< /强>代码>计算< /代码>中,而不必在中间设置变量? 不可能使用 SCANFF()/CODE >,因为该函数被设计为解析您选择的格式的输入,因此它必须在一个调用中分配多个输入值。请注意,它不会改变编译后的

例如,假设我有一个函数
双重计算(双重输入)
它接受
输入
并向其添加
5.0
,然后返回值

假设我想接受用户输入。好的,创建一个变量用于
scanf
,将其命名为
double temp
。然后
scanf(“%lf”、&temp)最后我们使用函数
calculate(temp)


是否有任何方式将<强>直接输入到函数< /强>代码>计算< /代码>中,而不必在中间设置变量?

不可能使用<代码> SCANFF()/CODE >,因为该函数被设计为解析您选择的格式的输入,因此它必须在一个调用中分配多个输入值。请注意,它不会改变编译后的代码,因为无论您是否创建变量,实际机器都必须将值存储在某个位置,以便将其传递给函数

如果您关心C代码的形状,那么当然可以提供自己的输入函数来返回输入,例如

double getDoubleInput(void)
{
    double in;

    /* add sanity checks and whatever, following is just a stub ... */
    scanf("%lf", &in);
    return in;
}

然后用这个代替。如果合适的话,一个好的编译器会将其内联,因此生成的代码应该保持大致相同。

使用
scanf()
是不可能的,因为此函数旨在以您选择的格式解析输入,因此它可能必须在一次调用中分配多个输入值。请注意,它不会改变编译后的代码,因为无论您是否创建变量,实际机器都必须将值存储在某个位置,以便将其传递给函数

如果您关心C代码的形状,那么当然可以提供自己的输入函数来返回输入,例如

double getDoubleInput(void)
{
    double in;

    /* add sanity checks and whatever, following is just a stub ... */
    scanf("%lf", &in);
    return in;
}

然后用这个代替。如果合适的话,一个好的编译器会将其内联,因此生成的代码应该保持大致相同。

使用
scanf()
是不可能的,因为此函数旨在以您选择的格式解析输入,因此它可能必须在一次调用中分配多个输入值。请注意,它不会改变编译后的代码,因为无论您是否创建变量,实际机器都必须将值存储在某个位置,以便将其传递给函数

如果您关心C代码的形状,那么当然可以提供自己的输入函数来返回输入,例如

double getDoubleInput(void)
{
    double in;

    /* add sanity checks and whatever, following is just a stub ... */
    scanf("%lf", &in);
    return in;
}

然后用这个代替。如果合适的话,一个好的编译器会将其内联,因此生成的代码应该保持大致相同。

使用
scanf()
是不可能的,因为此函数旨在以您选择的格式解析输入,因此它可能必须在一次调用中分配多个输入值。请注意,它不会改变编译后的代码,因为无论您是否创建变量,实际机器都必须将值存储在某个位置,以便将其传递给函数

如果您关心C代码的形状,那么当然可以提供自己的输入函数来返回输入,例如

double getDoubleInput(void)
{
    double in;

    /* add sanity checks and whatever, following is just a stub ... */
    scanf("%lf", &in);
    return in;
}


然后用这个代替。如果合适的话,一个好的编译器会将其内联,因此生成的代码应该大致保持不变。

如果需要,可以从函数内部调用scanf是的,这一点很好。然而,我仍然好奇我上面描述的是否可行。
scanf
返回值是成功匹配的转换说明符的数量,而不是其中任何一个的值。没有办法让scanf说出你想要的值。也许我们应该创建一些C的扩展,在这里你可以有一种结构,里面有变量,可以从外部访问,里面也有函数,可以调用。有个主意。@疯了不,不是真的。即使您将指针传递到
calculate
,在调用
calculate
之前仍然需要获取输入。这是一个鸡或蛋的问题(实际上是一个序列问题)。如果你想,你可以从函数内部调用scanf是的,很好。然而,我仍然好奇我上面描述的是否可行。
scanf
返回值是成功匹配的转换说明符的数量,而不是其中任何一个的值。没有办法让scanf说出你想要的值。也许我们应该创建一些C的扩展,在这里你可以有一种结构,里面有变量,可以从外部访问,里面也有函数,可以调用。有个主意。@疯了不,不是真的。即使您将指针传递到
calculate
,在调用
calculate
之前仍然需要获取输入。这是一个鸡或蛋的问题(实际上是一个序列问题)。如果你想,你可以从函数内部调用scanf是的,很好。然而,我仍然好奇我上面描述的是否可行。
scanf
返回值是成功匹配的转换说明符的数量,而不是其中任何一个的值。没有办法让scanf说出你想要的值。也许我们应该创建一些C的扩展,在这里你可以有一种结构,里面有变量,可以从外部访问,里面也有函数,可以调用。有个主意。@疯了不,不是真的。即使您将指针传递到
calculate
,在调用
calculate
之前仍然需要获取输入。这是一个鸡或蛋的问题(实际上是一个序列问题)。如果你想,你可以从函数内部调用scanf是的,很好。然而,我仍然好奇我上面描述的是否可行。
scanf
返回值是成功匹配的转换说明符的数量,而不是其中任何一个的值。无法使
scanf
说出您想要的值。也许我们应该创建一些C的扩展,其中可以有一种结构,其中包含可以访问的变量