我输入时没有错误
char a[10] = "Hi";
Run Code Online (Sandbox Code Playgroud)
但是当我将其更改为以下内容时,我收到错误: Array type char is not assignable.
char a[10];
a = "Hi";
Run Code Online (Sandbox Code Playgroud)
为什么数组类型char不可分配?是因为语言是故意写的还是我错过了一点?
Cog*_*eel 13
正如我上面评论的那样,C++这样做的方法是使用std::string而不是char[].这将为您提供您期望的任务行为.
也就是说,你只是在第二种情况下得到一个错误的原因是=这两行代表不同的东西:
char a[10] = "Hi";
a = "Hi";
Run Code Online (Sandbox Code Playgroud)
第一个是初始化,第二个是赋值.
第一行在堆栈上分配足够的空间以容纳10个字符,并将前三个字符初始化为"H","i"和"\ 0".从这一点开始,所有a操作都是指堆栈上数组的位置.因为数组只是堆栈中的一个位置,a所以永远不允许更改.如果您希望堆栈上的其他位置保存不同的值,则需要一个不同的变量.
另一方面,第二(无效)线试图改变a以指代(技术上不同的)咒语"Hi".由于上述原因,这是不允许的.一旦你有了一个初始化的数组,你唯一可以做的就是从中读取值并将值写入它.您无法更改其位置或大小.这就是在这种情况下作业将尝试做的事情.
NPE*_*NPE 10
该语言不允许将字符串文字分配给字符数组.您应该使用strcpy():
strcpy(a, "Hi");
Run Code Online (Sandbox Code Playgroud)