为什么不能使用“=”运算符将一个数组变量直接分配给另一个数组变量?

Kac*_*aye 5 c++ arrays char-pointer

为什么以下作业不起作用?如果可能的话,我想要一个低级的解释。另外,这是我得到的编译器错误:'char*' 到 'char [20]' 赋值中的类型不兼容

class UCSDStudent {

  char name[20];

  public:

    UCSDStudent( char name[] ) {
      //this-> name = name; does not work! Please explain why not
      strcopy( this -> copy, copy ); //works 
    }

};
Run Code Online (Sandbox Code Playgroud)

Ale*_*sie 5

因为当您进行这样的函数调用时,UCSDStudent( char name[] )仅复制数组的地址name而不是整个数组。这是一个 C\C++ 功能。

此外,name定义的 aschar name [20]不是可修改的左值。

关于strcpy:它会带来未定义的行为,就好像你的源数组没有 NULL 字符一样,它也会复制一些垃圾this->name。您可以strcpy 在这里阅读更多相关内容