搜索

首页  >  问答  >  正文

c++中char[ ]的赋值问题

data.uData.serverinfo.iemi = pThis->imei;
data.uData.serverinfo.iemi是一个struct类型的 char imei[128];
pThis->imei 是一个private的char [128];在头文件中定义
但是编译的时候就报错
./Core/ServerManager.cpp:145:32: error: invalid array assignment

 data.uData.serverinfo.iemi = pThis->imei;
 

这是什么情况啊

PHPzPHPz2805 天前639

全部回复(2)我来回复

  • PHP中文网

    PHP中文网2017-04-17 13:38:53

    cdata.uData.serverinfo.iemipThis->imei这两个参数不是指代数组的,而是代表数组指针,也就是记录数据存储在内存中的位置的。因为data.uData.serverinfo.iemi不是一个独立数组,而是一个结构体中的数组,所以它在内存中的位置是与结构体绑定在一起的,也就是说你不能把一个外部数组的地址直接赋值给它(赋值是无效的,因为即使不发生错误,之后的程序还是会访问在结构体内的数组也就是原来数组的内容),所以也就造成了你这个错误。如果你要复制外部数组的值到结构体中的数组里,要使用memcpy函数。如果你只想传递地址,那就把这个参数定义成指针。

    回复
    0
  • 天蓬老师

    天蓬老师2017-04-17 13:38:53

    直接赋值?难道不是应该用strcpy或者memcpy吗?如果想直接=,应该用std::string,而不是char[]。

    回复
    0
  • 取消回复