我需要初始化修復大小的數組很多時候,就像這樣:更智能的數組初始化方法?
for(uint16_t q=0; q<SIZE; q++)
array[q]=value;
數組定義爲float array[SIZE];
是否有這樣做的一個更好的方式,宏或類似的更換?
p.s. 不允許使用mem___
來電。
我需要初始化修復大小的數組很多時候,就像這樣:更智能的數組初始化方法?
for(uint16_t q=0; q<SIZE; q++)
array[q]=value;
數組定義爲float array[SIZE];
是否有這樣做的一個更好的方式,宏或類似的更換?
p.s. 不允許使用mem___
來電。
隨着預處理器,你可以這樣做:
#define nmembers(x) (sizeof(x)/sizeof(*(x)))
#define arrset(arr, val) \
do { \
size_t i; \
for (i = 0; i < nmembers(arr); ++i) \
(arr)[i] = val; \
} while (0)
float array[SIZE], val = 0.67f;
arrset(array, val);
C沒有內置的方式來初始化整個陣列的一些非零值。
如果使用GCC,它有Designated Initializers擴展。您可以使用它像:
float widths[] = { [0 ... 99] = 3.14 };
這個集合的所有元素來3.14
。
還有什麼比這一點,並沒有'memset'或'memcpy'更好?什麼類型是'數組'? – i486
這是在編譯時已知的「值」還是你得到它的運行時間? – Swanand
請定義「更好」。 –