例如,
gcc 编译这个没问题...
char s[7] = "abc";
但它给出了错误“赋值中的类型不兼容”......
char s[7];
s = "abc";
有什么不同?
第一个是初始化;它的意思是“声明一个 7 的数组char
入栈,并用以下内容填充前 3 个元素'a'
, 'b'
, 'c'
,其余元素'\0'
".
在第二个中,您没有将数组初始化为任何内容。然后,您尝试分配给该数组,但该数组永远无效。像这样的东西会“起作用”:
const char *s;
s = "abc";
但意思会略有不同(s
现在是一个pointer,不是一个array)。在大多数情况下,差异很小。但有几个重要的警告,例如您不能修改内容。还,sizeof(s)
会给你一个指针的大小,而在你的原始代码中,它会给你 7 (数组的大小)。
推荐读物是这样的:http://c-faq.com/charstring/index.html.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)