簡體   English   中英

C ++函數中的消息傳遞

[英]Message Passing in C++ Functions

我正在嘗試使用一個函數(我們稱其為“循環”),該函數除其他事項外,負責遞增一個變量,該變量表示自啟動以來我的程序已執行的迭代次數(這是FDTD模擬)。 我需要在程序的另一個函數中使用此迭代器變量進行決策,例如,如果完成一定數量的迭代,則執行一些操作。

我知道如何通過引用將變量從main傳遞到函數中,但是我看不到如何使用也從main調用的另一個函數來檢查此變量的值。

這使我想到以下問題:

  1. 如果我通過引用將變量傳遞給兩個函數,那么兩個變量始終都具有變量的最新副本嗎?

  2. 如果我使用在main之外定義的全局變量(我知道這是一種不好的做法),那么函數可以修改該變量的值嗎? 如果需要通過引用傳遞給函數,該怎么做?

  3. 是否有其他方法可以維護不涉及上述方法之一的兩個或多個函數可用的同步,正確的變量值?

如果我通過引用將變量傳遞給兩個函數,那么兩個變量始終都具有變量的最新副本嗎?

他們將引用相同的變量,因此,是的。 當一個變量修改后,另一個將能夠讀取新的“同步”值。

如果我使用在main之外定義的全局變量(我知道這是一種不好的做法),那么函數可以修改該變量的值嗎?

是的,但是不要使用全局變量。

如果需要通過引用傳遞給函數,該怎么做?

就像接收函數輸入作為參考一樣簡單:

void func(int&); // example
//           ^  

是否有其他方法可以維護不涉及上述方法之一的兩個或多個函數可用的同步,正確的變量值?

最好使用一個類代替,這樣您也可以保護同步變量免受外部編輯的影響:

class your_class {
private:
    T synchronized;
public:
    void func_one();
    void func_two();
};

但這實際上取決於您實際要完成的工作。

我知道如何通過引用將變量從main傳遞到函數中,但是我看不到如何使用也從main調用的另一個函數來檢查此變量的值。

是的,您可以在兩個不同的函數中訪問相同的變量。 因為您的兩個函數被main()依次調用。 如果您的工作是用於仿真,則在您的情況下可能不需要全局。

main()
{
int cnt;
loop(int &cnt)
action(int &cnt)
}

您可以通過全局變量來實現相同目的。

暫無
暫無

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

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