考虑下面的代码。
char message[]="foo";
void main(void){
    message[] = "bar";
}为什么MPLAB IDE v8.63中存在语法错误?我只是尝试更改字符数组的值。
发布于 2013-01-18 17:53:22
在声明之后不能像那样使用字符数组。如果你想给你的字符数组赋值,你可以这样做:
strcpy(message, "bar");发布于 2013-01-18 17:53:34
像这样的任务
message[] = "bar";或
message = "bar";C语言不支持。
初始赋值之所以有效,是因为它实际上是伪装成赋值的数组初始化。编译器解释
char message[]="foo";作为
char message[4] = {'f', 'o', 'o', '\0'};实际上这里没有涉及到字符串文字"foo"。
但当你试着
message = "bar";"bar“被解释为实际的字符串文字,不仅如此,而且message不是一个可修改的左值,即。你不能给它赋值。如果你想修改你的数组,你必须一个字符一个字符地修改:
message[0] = 'b';
message[1] = 'a';等,或者(最好)使用一个可以为您完成此任务的库函数,如strcpy()。
发布于 2013-01-18 17:52:13
只有在初始化时声明char数组才能做到这一点
message[] = "bar";你不能在你的代码中这样做
要修改它,您可以使用<string.h>中的strcpy
strcpy(message, "bar");https://stackoverflow.com/questions/14396202
复制相似问题