将变量直接传递给 C 中的函数?
Pass a variable directly into a function in C?
举个例子,假设我有一个函数 double calculate(double input);
,它接受 input
并向其添加 5.0
,然后 returns 值。
说我想接受 用户输入 。好的,所以创建一个与 scanf
一起使用的变量,将其命名为 double temp
。然后 scanf("%lf", &temp);
最后我们使用函数 calculate(temp)
.
有什么方法可以将输入直接传递给函数 calculate
而无需在中间设置变量?
使用 scanf()
是不可能的,因为此函数旨在 解析 您选择的格式的输入,因此它可能必须分配多个输入值一通电话。请注意,它无论如何都不会更改编译后的代码,因为无论您是否创建变量,真实机器都有将值存储在某处用于将其传递给函数。
如果您关心 C 代码的形状,您当然可以提供自己的输入函数,执行 return 输入,例如
double getDoubleInput(void)
{
double in;
/* add sanity checks and whatever, following is just a stub ... */
scanf("%lf", &in);
return in;
}
然后改用这个。一个好的编译器会在适当的时候内联它,所以生成的代码应该保持大致相同。
举个例子,假设我有一个函数 double calculate(double input);
,它接受 input
并向其添加 5.0
,然后 returns 值。
说我想接受 用户输入 。好的,所以创建一个与 scanf
一起使用的变量,将其命名为 double temp
。然后 scanf("%lf", &temp);
最后我们使用函数 calculate(temp)
.
有什么方法可以将输入直接传递给函数 calculate
而无需在中间设置变量?
使用 scanf()
是不可能的,因为此函数旨在 解析 您选择的格式的输入,因此它可能必须分配多个输入值一通电话。请注意,它无论如何都不会更改编译后的代码,因为无论您是否创建变量,真实机器都有将值存储在某处用于将其传递给函数。
如果您关心 C 代码的形状,您当然可以提供自己的输入函数,执行 return 输入,例如
double getDoubleInput(void)
{
double in;
/* add sanity checks and whatever, following is just a stub ... */
scanf("%lf", &in);
return in;
}
然后改用这个。一个好的编译器会在适当的时候内联它,所以生成的代码应该保持大致相同。