Joh*_*ton 2 c arrays string char
例如,
gcc编译好了......
char s[7] = "abc";
Run Code Online (Sandbox Code Playgroud)
但它给出了错误"赋值不兼容的类型"与...
char s[7];
s = "abc";
Run Code Online (Sandbox Code Playgroud)
有什么不同?
第一个是初始化; 它的意思是"声明7的阵列char在栈上,并与填充第一3个元素'a','b','c',并用剩余的元素'\0'".
在第二个中,您没有将数组初始化为任何东西.然后,您尝试分配给永远无效的数组.像这样的东西会"起作用":
const char *s;
s = "abc";
Run Code Online (Sandbox Code Playgroud)
但意思略有不同(s现在是指针,而不是数组).在大多数情况下,差异很小.但有几个重要的警告,例如你不能修改内容.另外,sizeof(s)给你一个指针的大小,而在原始代码中,它会给你7(数组的大小).
推荐阅读是这样的:http://c-faq.com/charstring/index.html.
| 归档时间: |
|
| 查看次数: |
163 次 |
| 最近记录: |