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

查看:286
本文介绍了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;
 

这是什么情况啊

解决方案

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

这篇关于c++中char[ ]的赋值问题的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆