为什么
char line[10] = "1234";
Run Code Online (Sandbox Code Playgroud)
工作得很好但是
char line[10];
line = "1234";
Run Code Online (Sandbox Code Playgroud)
抛出一个
error: incompatible types in assignment
Run Code Online (Sandbox Code Playgroud)
错误?
数组不是指针.在你的第二个例子中,line是一个不可修改的左值,但更重要的是,无论你放在右边的是什么,它都不能有类型char [10](因为数组在非左值上下文中衰减为指针)因此类型永远不会比赛.
对于它的价值,字符串文字具有类型char [N],而不是const char [N],尤其不是const char *,尽管尝试修改它会调用未定义的行为.(这N是引用文本的长度,以字节为单位,包括添加的空终止符.)