C-初始化指针后 char *p=“string”;为什么不能修改p里的单个字符

发布于 2016-11-07 13:13:30 字数 184 浏览 1372 评论 3

#include<stdio.h>
#include<string.h>
int main()
{
char *p="string";
p[2]='c';

return 0;
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

瑾兮 2017-09-26 20:36:13

“string”被称为literal string或字面常量,定义在常量区,其内容不可更改。从某种意义上说,教科书说的没错,只是你没有理解而已。另外,指向常量的变量应该用const修饰:const char* p = “string”。

想挽留 2017-08-31 08:11:09

严格的说,“修改p里的单个字符”这种说法就不对,p是一个指针,里面没有单个字符,有的只是"string"的内存地址。
这跟char c[] = "string"完全不同。c分配在栈区,里面存着"string"的一份拷贝,这时要是说"c里的单个字符",还能理解。
建议题主纠结一下char *p = "string"跟char c[] = "string"的区别,这会对你大有帮助。

晚风撩人 2017-07-20 07:03:06

char *p="string";中的“string”是一个常量,放在内存中的常量数据区中,即p指向的是一个常量

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文