gpt4 book ai didi

c++ - 指向 char 数组的指针,未处理的异常

转载 作者:行者123 更新时间:2023-11-30 02:50:50 24 4
gpt4 key购买 nike

我是 C++ 新手,正在玩弄指针。我不明白为什么这段代码对我不起作用。你能告诉我它有什么问题吗?

char * name = "dharman";
char *ptr = name+3;
*ptr = 'a';

printf("%s", name);

我总是遇到未处理的异常。

最佳答案

这本身就是一个错误:

char * name = "dharman";

字符串在常量内存中,但指针的类型表明它可以被修改。尝试修改它会产生未定义的行为:在其他平台上该程序可以运行,但你运气不好。

这是 C++03 中的一个怪癖;较新的 C++11 规范使其成为非法的。这样做的原因是 C 兼容性。

无论您是用 C++ 还是纯 C 编写,解决方案都很简单:

char name[] = "dharman";

现在编译器将数据存储在读写内存中,因为您请求的是 char 数组,而不是指向其他内存的指针。

关于c++ - 指向 char 数组的指针,未处理的异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20095502/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com