簡體   English   中英

&符號在函數調用中是什么意思?

[英]What does ampersand mean in function call?

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

adjust(&total, adjustmentFactor);

我知道totaladjustmentFactor都是雙精度值,但是由於這個函數確實將輸出分配給了一個變量,我假設該函數改變了 total 指向的內容? 如果這就是它的作用,如果您要實施調整,您將如何更改它?

您可以通過兩種方式將參數傳遞給函數:

  1. 按價值

    總計;

    調整(總計);

    在這種情況下,將創建傳遞值的本地副本。 如果您以某種不會影響父函數的“總”值的方式更改它。

  2. 引用

    總計;

    調整(總計);

在這種情況下,'total' 變量的地址將被傳遞,現在如果您以任何方式更改 adjust() 內部的 total,更改將使用來自父函數的 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 ,並且每次您想為原始變量分配一個新值時。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM