我正在做一些計算,我需要手動撰寫一些大陣列(每個約 100 個元素)。它們看起來像這樣:
int arr[] = {3, 4, 5,
4, 9,
3, 4, 6, 9};
這樣的多行對于可讀性很重要,因為陣列中的行對應于矩陣的行。
為了不弄亂主函式,我想將這些陣列放在頭檔案中。據我所知,有兩種選擇:
在頭檔案中使這些陣列成為全域變數。如果可能的話,我想避免使用全域變數。
在頭檔案中創建一個函式,如下所示:
void data(int *arr) { arr[0] = 3; arr[1] = 4; arr[2] = 5; arr[3] = 4; arr[4] = 9; arr[5] = 3; arr[6] = 4; arr[7] = 6; arr[8] = 9; }
并arr從主函式傳入。但這很丑陋,而且寫起來很費時間。
還有其他解決方案嗎?
uj5u.com熱心網友回復:
我剛剛想到了一個解決方案!我可以將陣列寫為頭檔案中的“全域變數”,但#include該檔案在主函式中而不是在程式的頂部。
uj5u.com熱心網友回復:
您可以寫入任何檔案,甚至是 csv,然后您可以使用 excel 打開并編輯它,只有數字,例如
1,2,3,4,
5,6,7,8,
2,4,4,4
然后在c檔案中
int arr[] ={
#include"a.csv"
};
uj5u.com熱心網友回復:
您的方法會有所不同,具體取決于程式的邏輯,以及您使用 C 還是 C 。(在大多數情況下,如果您同時標記兩者,人們會非常生氣。請參閱)
如果您有一組在編譯時預定義的許多陣列,即在程式開始時包含一些資料,您可以在具有合理名稱的頭檔案中定義它們。如果您愿意,您可以在它們前面加上一個識別符號,例如myMats_mat1,用于您的矩陣以避免命名沖突。namespaceC 還提供了一種通過s完成此任務的本地方式。
不過,通常情況下,你會有一個更清晰、更整潔的邏輯。例如,如果您有大量資料,例如包含數百個元素的許多陣列,您通常會將其存盤在檔案中(常規文本檔案或二進制檔案),并具有讀取和回寫資料的函式需要時到本地容器。這還允許您將資料與代碼分開,并占用更少的記憶體,因為您只會使用可能較小的資料子集。
在大多數情況下,您還會有多個函式來處理這些陣列,也許您會有一個函式來比較兩個矩陣,另一個來取行列式,另一個來求和所有元素,等等。您還可以將這些單獨組合在一起,.h并將.c它們與您的陣列(在.h檔案中)一起歸檔。同樣取決于您的程式,您甚至可能不需要在main函式中訪問陣列本身,而只需呼叫函式對它們進行處理。在這種情況下,您可以將陣列定義為static,將它們的范圍限制在該特定檔案中,因此不會真正將它們放在全域范圍內。
在 C 中,您還可以將它們分組到一個類中,包括陣列和相關函式。它與上面的想法基本相同,只是實作它的 C 方式。
我應該強調,根據您的用例,我提出的想法可能是好的、可接受的或完全可怕的。帶著一粒鹽吃。
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/431170.html
標籤:C
