c++中char[ ]的赋值问题
PHPz
PHPz 2017-04-17 13:36:53
0
2
633

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;
 

这是什么情况啊

PHPz
PHPz

学习是最好的投资!

répondre à tous(2)
Ty80

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

Peter_Zhu

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

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal