2016-11-10 86 views
1

我很新的C數組的元素++,所以如果有一個更簡單的方法來得到我想要的,隨時告訴我什麼?C++定義功能外

我有含有常量的頭我需要在我的代碼中包含任何地方以便在方程中使用它們。諸如溫度和壓力之類的東西。在我使用恆定質量的單個物體之前。

real massObject   = 7.35619e-25; 

現在我想擁有多個質量,以便能夠使用更多的對象。 所以我試圖定義我創建的數組的元素。

const int numObjects  = 1; 
double vmassObject[numObjects]; 
vmassObject[0]   = 7.35619e-25; 

後來我發現,這是不可能的定義函數外的每一個元素,但我不想使用的功能,因爲我將不得不每次調用它。另外通過是沒有選擇的。 有沒有一種方法來定義全局元素?

感謝

+0

實際上,你可以在一個函數內聲明這個數組爲'static',這樣它將在你的程序的整個生命週期中(而不是每次調用這個函數)初始化一次。你可以進一步向函數傳遞一個輸入參數,告訴它你希望它返回的數組中的哪個元素。因此,你可以將這個數組封裝在一個狹窄的接口下,並有你選擇的訪問級別(這裏我描述了一個簡單的只讀訪問級接口)。另外,如果你想進一步優化,你可以聲明函數'inline'。 –

回答

1

可以初始化數組:

double vmassObject[numObjects] = { 
    7.35619e-25 
}; 

與此相關的,你不能把這個在您在多個源文件包含一個頭文件。這是因爲那麼數組將被多次定義,並且您只能在程序中定義一個定義。

在表頭可以聲明陣列:

extern double vmassObject[numObjects]; 

然後,在一個源文件中把定義(與初始化)。

+0

謝謝!初始化作品,但當然不是很好。 當我把定義放在一個源文件中時,它必須再次出現在函數中,我不想要或者我錯過了某些東西? –

+0

@TK_B是的,似乎你錯過了一些東西,但我不知道是什麼。如果您複製粘貼我的答案中顯示的定義,則可以將其放在任何源文件的全局範圍內。請記住先定義(並初始化)大小常量。 –