11 个解决方案
#1
常量字符串首元素的地址是常量,数组名也是常量,能常量赋给常量么?
#2
我只听过字符串常量,没听过常量字符串.
字符串常量:
- 类型是char[N]
- 连续存储,末尾自动添加\0
- 静态存储
- 相同值常量的地址可以不同
- 修改字符是未定义行为
常量字符串? const char* const?, C语言的const只是君子协议 又不是不能再修改.
字符串常量:
- 类型是char[N]
- 连续存储,末尾自动添加\0
- 静态存储
- 相同值常量的地址可以不同
- 修改字符是未定义行为
常量字符串? const char* const?, C语言的const只是君子协议 又不是不能再修改.
#3
char str[] = "Hello World!";
#4
地址赋值给地址,当然不行了
#5
可是不是经常有 char name[20]="你好,朋友";这样的语句吗?
#6
这是 初始化,不是赋值
#7
那么赋值应该怎么写呢?
#8
“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
#9
char name[20] ={0};
strcpy(name, "hello idiot");//赋值不行,但是可以拷贝
//数组名是数组的首地址,是常量。
#10
需要复制的话建议使用strcpy或者更加安全的strcpy_s
如果觉得这样写麻烦,可以使用标准库中的std::string,其对象支持直接复制
如果觉得这样写麻烦,可以使用标准库中的std::string,其对象支持直接复制
#1
常量字符串首元素的地址是常量,数组名也是常量,能常量赋给常量么?
#2
我只听过字符串常量,没听过常量字符串.
字符串常量:
- 类型是char[N]
- 连续存储,末尾自动添加\0
- 静态存储
- 相同值常量的地址可以不同
- 修改字符是未定义行为
常量字符串? const char* const?, C语言的const只是君子协议 又不是不能再修改.
字符串常量:
- 类型是char[N]
- 连续存储,末尾自动添加\0
- 静态存储
- 相同值常量的地址可以不同
- 修改字符是未定义行为
常量字符串? const char* const?, C语言的const只是君子协议 又不是不能再修改.
#3
char str[] = "Hello World!";
#4
地址赋值给地址,当然不行了
#5
可是不是经常有 char name[20]="你好,朋友";这样的语句吗?
#6
这是 初始化,不是赋值
#7
那么赋值应该怎么写呢?
#8
“变量赋值”和“变量初始化”不是一回事!
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
“变量赋值”发生在运行期,其写法遵循赋值语法规定。
“变量初始化”发生在编译期或运行期,其写法遵循初始化列表语法规定。
#9
char name[20] ={0};
strcpy(name, "hello idiot");//赋值不行,但是可以拷贝
//数组名是数组的首地址,是常量。
#10
需要复制的话建议使用strcpy或者更加安全的strcpy_s
如果觉得这样写麻烦,可以使用标准库中的std::string,其对象支持直接复制
如果觉得这样写麻烦,可以使用标准库中的std::string,其对象支持直接复制