const char*是字符串还是指针

W.J*_*Joe 4 c++ string pointers

我以为const char*表示一个指向不可变字符串的可变指针.

但是,当我这样做时,

#include <iostream>
using namespace std;

const char *name1 = "Alex";

int main() 
{
   name1 = "John";
   cout << name1 << endl;
}
Run Code Online (Sandbox Code Playgroud)

它只是打印约翰并没有显示任何问题.我想知道为什么程序将name1视为字符串并使其可变?

Sto*_*ica 5

我想知道为什么程序将name1视为字符串并使其可变?

它没有,你只是为指针(地址"John")分配了一个新地址.你自己说"一个指向不可变字符串的可变指针 ".你修改了指针,并且你试图实际修改指针,类型系统会阻止你这样做(由于const限定符).