我爲什麼能做到字符數組聲明的問題
char identifier[4] = {'A', 'B', 'C', 'D'};
,而不是
char identifier[4];
&identifier = {'A', 'B', 'C', 'D'}; // syntax error : '{'
?
,爲什麼我能做到
char identifier[4] = "ABCD"; // ABCD\0, aren't that 5 characters??
,而不是
char identifier[4];
&identifier = "ABCD"; // 'char (*)[4]' differs in levels of indirection from 'char [5]'
?
這是個玩笑嗎?
如果您需要將聲明與作業分開,您可以隨時執行此操作:'char identifier [4]; sprintf(標識符,「ABCD」);'。只要確保分配的字符串符合分配的數組或使用安全版本['sprintf_s'](http://msdn.microsoft.com/zh-cn/library/ce3zzk1k%28v=VS.100%29)。 ASPX)。 – 2010-11-08 19:25:56
好的謝謝!這有效,但爲什麼我需要一個像這樣簡單的功能...... – Midas 2010-11-08 19:30:06
@Jaime:你不覺得sprintf()在這種情況下可能是一個攻擊堅果的大錘嗎? memcpy()將足以*和*解決您爲sprintf_s()提出的問題。 – Clifford 2010-11-08 22:18:36