&符号在函数调用中是什么意思?

What does ampersand mean in function call?

我是 C 语言编程的新手,我正在查看一些代码。我想知道以下是什么意思:

adjust(&total, adjustmentFactor);

我知道 totaladjustmentFactor 都是双精度数,但是由于这个函数确实将输出分配给一个变量,我假设这个函数改变了 total 指向什么?如果那是它的作用,如果你要实施调整,你会如何改变它?

您可以通过两种方式将参数传递给函数:

  1. 按值

    总计;

    调整(总计);

    在这种情况下,将创建传递值的本地副本。如果您以某种不会影响父函数的 'total' 值的方式更改它。

  2. 参考

    总计;

    调整(&总计);

在这种情况下,将传递 'total' 变量的地址,现在如果您以任何方式在 adjust() 中更改 total ,将使用父函数中的 total 变量执行更改。

我推荐你阅读:

Reference and dereference

pointers

是的,你是对的:& 符号获取左值(变量)的地址并将其作为指针传递。

您的 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,每次你想为原始变量分配一个新值。