我是C语言编程的新手,我在看一些代码。我想知道以下是什么意思:
adjust(&total, adjustmentFactor);
我知道total
和adjustmentFactor
都为双精度,但是由于该函数确实将输出分配给变量,因此我假设该函数更改了总点数?如果那是它的工作,那么如果要实施调整,您将如何更改它?
您可以通过两种方式将参数传递给函数:
按值
int total;
调整(总计);
在这种情况下,将创建传递值的本地副本。如果您以某种方式更改它,而不会影响父函数的“总”值。
参考
int total;
adjust(&total);
在这种情况下,将传递'total'变量的地址,现在,如果您以任何方式更改total内部的Adjust(),更改将使用父函数的total变量进行。
我建议您阅读:
[是的,您是对的:&符采用左值(变量)的地址,并将其作为指针传递。
您的adjust()
函数如下所示:
void adjust(double *a, double f) {
... do a lot of stuff
*a = *a * f/2+1.0; // dummy formula that will change the content
...
};
因此,在函数中,每当您要使用第一个参数所指向的值时,便要使用*a
,而每个用户都想为原始变量分配一个新值。