能夠定義例如C中的左值,右值和數組初始化
int a[] = {1,2,3};
是非常方便的,但是,數組a是一個r值,所以我不能隨後更改a中的值,例如,
a[] = {4,5,6};
爲希望做到這一點的上下文被寫入一串單元測試,其中我在我的陣列饋送到功能和測試輸出。我正在用不同的輸入對相同的函數進行測試,並希望避免爲我的輸入數組設置唯一的名稱,例如我不得不這樣做:
int test1_a[] = {1,2,3};
/* calls to functions */
int test2_a[] = {4,5,6};
/* calls to functions */
另外,如果我想要一個指針傳遞給數組到一個函數我一定要第一個投這樣的:
int a[] = {1,2,3};
int *b = a;
my_func(&b);
指針傳遞到像這樣的r值不起作用:
my_func(&a);
我的問題是,是否有任何其他的方法可以輕鬆地初始化值的數組沒有這些限制的痛苦? (特別是,以使它容易寫許多類似的單元測試,而不每次測試具有一組獨特的陣列名)
這可能是相關的:http://stackoverflow.com/q/8380348/726361 –
如果你唯一的問題是重新初始化數組而不重新編譯,那麼你可以從文件或數據庫中讀取它。 (別忘了大小!)。 – wildplasser
好點 - 我認爲這可能是要走的路。我現在正在從Python回到C,因此所有這些(可能)基本上愚蠢的問題... – bph