在初始化 const char 数组时,我尝试更改字符串,并且能够毫无问题地更改它。
我正在学习如何初始化 const char 数组。 我想我在这里犯了一些我无法找到的错误。
int main(int argc, char const *argv[])
{
const char *strs[10];
strs[0] = "wwww.google.com";
printf("%s\n", strs[0]);
strs[1] = "https://wwww.google.com";
strs[0] = "ss";
printf("%s\n", strs[0]);
return 0;
}
输出:
1st init: wwww.google.com
2nd init: ss -> Here, I expect it to throw error
最佳答案
const char* s = "Hi";
告诉编译器指针指向的内容是常量。这意味着 s[0] = 'P';
将导致编译错误。但您可以修改指针。另一方面,
char* const s = "Hi";
告诉编译器该指针是常量。这意味着 s = "Pi";
将导致编译错误。但是当你尝试修改字符串*
您的代码描述了前一种行为,而不是您认为的后者
<小时/>* 修改字符串文字将调用未定义行为
关于c - 在 C 中重新初始化 const char 数组不会给出错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57025418/