Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 常量字符指针修改_C_String_Casting - Fatal编程技术网

C 常量字符指针修改

C 常量字符指针修改,c,string,casting,C,String,Casting,我们可以将一个常量字符*分配给另一个常量字符*并修改该值吗 const char * c1; const char * c2 = c1; 上述作业有效吗 const char*表示字符串的内容是常量。可以有不同的指针指向同一个常量内存。换句话说,指针是具有相同值的不同变量。请记住,指针的值是它所指向的内存的地址 所以,是的,上面的作业是完全有效的 我不知道这个问题是否与你的工作有关。你在这里说: 我们可以将一个常量字符*分配给另一个常量字符*并修改该值吗 const char * c1;

我们可以将一个常量字符*分配给另一个常量字符*并修改该值吗

const char * c1; 
const char * c2 = c1; 

上述作业有效吗

const char*
表示字符串的内容是常量。可以有不同的指针指向同一个常量内存。换句话说,指针是具有相同值的不同变量。请记住,指针的值是它所指向的内存的地址

所以,是的,上面的作业是完全有效的


我不知道这个问题是否与你的工作有关。你在这里说:

我们可以将一个常量字符*分配给另一个常量字符*并修改该值吗

const char * c1; 
const char * c2 = c1; 

如果“修改值”的意思是修改字符串的内容(这是您在上一个问题中想要做的),那么不,您不能。在这里给出的示例中,有两个指针指向相同的常量内存块。如果其中一个指针不能修改该内存,那么另一个指针也不能修改。

是的,它是完全有效的

const char*
表示指针指向的内容是常量,但它不会阻止指针被分配到另一个指针,因为这不会更改原始指针指向的内容

这将提供指向同一内存位置的两个指针

    |----------|                                 
    |   c1     |                            
    |          |  1000                       
    |   2000   |                             
    |----------|                               
          |                                           
          |
          |
          |
          -------------------->|----------|
                               |   num    |
          -------------------->|          |  2000
          |                    |    2     |     
          |                    |----------|
          |
          |
    |----------|                             
    |   c2     |                            
    |          |  3000                       
    |   2000   |                             
    |----------|    

您可以随意修改
const char*
指针的内容,但请注意,修改声明为const的变量会导致未定义的行为

const char*
意味着指向的字符串是常量


char const*
意味着指针本身是常量。

您已经知道这一点,但值得重复一下:
const
限定符只是编译器的一个指令。它与您在运行时想做的任何事情都无关。
const
的意思是:“嘿,编译器先生:只要你注意到我以我无意的方式修改了这个变量,就告诉我。”好了,编译器在看到这种自毁性用法时会发出警告。我想在这种情况下,您可以让编译器发出一个完全错误

我把问题推回原来的形式。您添加的内容将包含在后续问题中: