为什么我不能改变 C 中常量 char 指针的内容?

bko*_*o00 -6 c

char* const p="C language\n";
printf("%s", p);
*p = "Change";
printf("%s", p);
Run Code Online (Sandbox Code Playgroud)

预计打印如下内容:

C language
Change
Run Code Online (Sandbox Code Playgroud)

Luc*_*ito 5

  1. const char* p = "C language";不是char* const。它们有不同的含义:const char* p表示指向的字符p不能被修改;whilechar* const p表示指针p本身不能被修改。

  2. *p = "Change";不是更改字符串内容的正确方法。即使字符串不是只读的。修改字符串内容的一种方法是使用:strcpy(p, "Change")

  3. 您无法修改字符串文字,因为根据定义它们是只读的。但是,您可以声明“char 数组”,并且可以修改它们:

    char s[] = "C language";
    printf("%s\n", s);
    strcpy(s, "Change");
    printf("%s\n", s);
    
    Run Code Online (Sandbox Code Playgroud)