我为什么能做到字符数组声明的问题
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