gpt4 book ai didi

带有运算符[]的c++ const指针

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:45:41 24 4
gpt4 key购买 nike

char* const p = "world";
p[2] = 'l';

第一条语句创建了一个由常量指针p指向的字符串,第二条语句试图修改字符串,被编译器接受,而在运行时,弹出访问冲突异常,谁能解释为什么?

最佳答案

所以你的问题有两个方面:

  1. 为什么会出现访问冲突:字 rune 字字符串作为文字存储在可执行程序的 CODE 页中;大多数现代操作系统不允许更改这些页面(包括 MS-windows),因此出现保护错误。

  2. 为什么编译器允许它:const 关键字在此上下文中指的是指针而不是它指向的东西。代码如 p="Hello";将导致编译器错误,因为您已将 p 声明为常量(不是 *p)。如果您想将它指向的东西声明为常量,那么您的声明应该是 const char *p。

关于带有运算符[]的c++ const指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18765975/

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