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

浏览:25日期:2023-05-11

问题描述

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;

这是什么情况啊

问题解答

回答1:

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

回答2:

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

相关文章: