我收到此错误
Unhandled exception at 0x00091e11 in JobTest.exe: 0xC0000005: Access violation writing location 0x0009573c.
在此功能的第一行
void myFunction(char str[]) {
str[0] = 'C';// here is a problem
printf(str);
}
myFunction("Hello World");
在Visual Studio 2010中。它是特定于编译器还是我做得很糟糕。 我也试过改变函数签名char * str。
答案 0 :(得分:4)
字符串文字是不可修改的。您正在尝试修改函数myFunction
中的字符串文字
字符串文字可能是共享的,可以存储在只读内存中(正如@Duplicator在他的评论中所说)。任何修改字符串文字的尝试都会调用未定义的行为。
正如@MooseBoys建议的那样,您可以通过将其更改为:
来修复它char msg[] = "Hello World";
myFunction(msg);