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
的意思是:“嘿,编译器先生:只要你注意到我以我无意的方式修改了这个变量,就告诉我。”好了,编译器在看到这种自毁性用法时会发出警告。我想在这种情况下,您可以让编译器发出一个完全错误 我把问题推回原来的形式。您添加的内容将包含在后续问题中: