Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.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

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++&引用;“的指示”;x";引用内存在";“是”;_C++_String - Fatal编程技术网

C++ 解决C++&引用;“的指示”;x";引用内存在";“是”;

C++ 解决C++&引用;“的指示”;x";引用内存在";“是”;,c++,string,C++,String,我有以下给出运行时错误的程序: *“x”处的指令引用了“y”处的内存 内存无法写入* 代码: intmain(){ char*str1=“雨”; char*&str2=str1; cout问题在于字符串文字在技术上是“char const pointer”。从右到左读取指向不可修改字符的指针。由于与“C”的向后可比性,编译器可以将其自动转换为“char pointer”。这并不意味着基础类型已更改,因此无法修改基础const对象未定义的行为 char *str1 = "Rain"

我有以下给出运行时错误的程序:

*“x”处的指令引用了“y”处的内存

内存无法写入*

代码:

intmain(){
char*str1=“雨”;
char*&str2=str1;

cout问题在于字符串文字在技术上是“char const pointer”。从右到左读取指向不可修改字符的指针。由于与“C”的向后可比性,编译器可以将其自动转换为“char pointer”。这并不意味着基础类型已更改,因此无法修改基础const对象未定义的行为

char         *str1 = "Rain";  // Lie this is not a char* 
char const*   str9 = "Rain";  // This is the real type.

// String lieterals =>   "XXXXX" are char const*
如果要修改字符串,则需要声明一个数组

char         str6[] = "Rain";
str6[0] = 'M';
*str6   = 'P';

问题是字符串文字在技术上是“char const pointer”。从右向左读取指向不可修改字符的指针。由于与“C”具有向后可比性,编译器可以将其自动转换为“char pointer”。这并不意味着基础类型已更改,因此无法修改基础const对象罚款行为

char         *str1 = "Rain";  // Lie this is not a char* 
char const*   str9 = "Rain";  // This is the real type.

// String lieterals =>   "XXXXX" are char const*
如果要修改字符串,则需要声明一个数组

char         str6[] = "Rain";
str6[0] = 'M';
*str6   = 'P';

char*&str2=str1;
是C中的语法错误。
cout
char*&str2=str1;
是C中的语法错误。
cout