new*_*bie 3 c arrays memory-management compiler-errors mplab
请考虑以下代码.
char message[]="foo";
void main(void){
message[] = "bar";
}
Run Code Online (Sandbox Code Playgroud)
为什么MPLAB IDE v8.63中存在语法错误?我只是想改变字符数组的值.
像.这样的作业
message[] = "bar";
Run Code Online (Sandbox Code Playgroud)
要么
message = "bar";
Run Code Online (Sandbox Code Playgroud)
C.不支持
初始赋值的工作原理是它实际上是数组初始化伪装成赋值.编译器解释
char message[]="foo";
Run Code Online (Sandbox Code Playgroud)
如
char message[4] = {'f', 'o', 'o', '\0'};
Run Code Online (Sandbox Code Playgroud)
这里实际上没有"foo"涉及字符串文字.
但是当你尝试时
message = "bar";
Run Code Online (Sandbox Code Playgroud)
"bar"被解释为实际的字符串文字,不仅如此,而且message不是可修改的左值,即.你不能分配东西.如果要修改数组,则必须逐个字符地执行:
message[0] = 'b';
message[1] = 'a';
Run Code Online (Sandbox Code Playgroud)
等,或(更好)使用为你做的库函数,如strcpy().
声明后你不能使用这样的字符数组.如果要为字符数组指定新值,可以这样做: -
strcpy(message, "bar");
Run Code Online (Sandbox Code Playgroud)