MST

星途 面试题库

面试题:C++ 中 const char *p 与 char * const p 错误使用分析

以下代码片段存在错误,请指出并解释原因: ```cpp int main() { const char *p = "hello"; p[0] = 'H'; return 0; } ```
36.0万 热度难度
编程语言C++

知识考点

AI 面试

面试题答案

一键面试
  1. 错误指出
    • 在代码p[0] = 'H';这一行存在错误。
  2. 原因解释
    • 变量p被声明为const char *,这意味着p所指向的内容是常量,不能被修改。这里p指向的字符串字面值"hello"存储在只读内存区域。当尝试通过p修改其指向的内容(即p[0] = 'H';)时,这会导致运行时错误,因为违反了常量的不可修改特性。如果想要修改字符串内容,p的声明应该是char *p = "hello";(不过这种方式在C++中不推荐,因为将字符串字面值赋值给char*会导致未定义行为,更好的方式是使用std::string或在栈上分配一个字符数组,如char arr[] = "hello"; char *p = arr;)。