如何解决谁能告诉我为什么C中的第一个示例给出了Segmentation Fault核心转储而第二个却没有?
int main() {
char* string = "Hello world";
string[2] = 'd';
printf("%s\n",string);
return 0;
}
int main() {
time_t now;
time(&now);
$
char* time = ctime(&now) + 11;
time[8] = '\0';
printf("%s\n",time);
return 0;
}
就像在第二个示例中一样,我能够为指针修改数组的特定索引,以使用NULL字符终止字符串。但是,对于第一个,我只是尝试将索引2处的字符更改为字母“ d”,但它拒绝打印输出,并且出现了Segmentation Fault错误!
我的猜测是,在第二个例子中,使用&号将内存中地址的内容获取到指针所指向的地方有些细微的差别,但这只是我的猜测。希望有人能给我一个清晰而又不太混乱的解释,这是为什么...谢谢!
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。