Nul*_*ion -2 c string pointers string-literals
请有人解释为什么以下C程序崩溃:
void changeChar(char *string);
int main(int argc, char *argv[])
{
char *test = "word";
changeChar(test);
return 0;
}
void changeChar(char *string) {
*string = 'A';
}
Run Code Online (Sandbox Code Playgroud)
而以下代码完美地运作:
void changeChar(char *string);
int main(int argc, char *argv[])
{
char test[] = "word";
changeChar(test);
return 0;
}
void changeChar(char *string) {
*string = 'A';
}
Run Code Online (Sandbox Code Playgroud)
因为
char *test = "word";
Run Code Online (Sandbox Code Playgroud)
是不一样的
char test[] = "word";
Run Code Online (Sandbox Code Playgroud)
第一个是字符串文字,它不能被改变 - 改变它会导致未定义的行为(因为它们是不可变的).
第二个是chars 的标准(可变)数组.
顺便说一句,第一个必须是 (感谢@ouah和@dasblinkenlight - 不知道,这种情况有区别)const char*,而不是char*(这甚至会解决问题 - 你会得到编译时错误)
| 归档时间: |
|
| 查看次数: |
136 次 |
| 最近记录: |