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

问题描述 投票:-1回答:2

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

adjust(&total, adjustmentFactor);

我知道totaladjustmentFactor都为双精度,但是由于该函数确实将输出分配给变量,因此我假设该函数更改了总点数?如果那是它的工作,那么如果要实施调整,您将如何更改它?

c parameter-passing ampersand
2个回答
0
投票

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

  1. 按值

    int total;

    调整(总计);

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

  2. 参考

    int total;

    adjust(&total);

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

我建议您阅读:

Reference and dereference

pointers


0
投票

[是的,您是对的:&符采用左值(变量)的地址,并将其作为指针传递。

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

© www.soinside.com 2019 - 2024. All rights reserved.