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

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

学习是最好的投资!

全部回覆(2)
Ty80

cdata.uData.serverinfo.iemipThis->imei這兩個參數不是指代數組的,而是代表數組指針,也就是記錄資料儲存在記憶體中的位置的。因為data.uData.serverinfo.iemi不是一個獨立數組,而是一個結構體中的數組,所以它在內存中的位置是與結構體綁定在一起的,也就是說你不能把一個外部數組的地址直接賦值給它(賦值是無效的,因為即使沒有錯誤,之後的程式還是會存取結構體內的陣列也就是原來數組的內容),所以也造成了你這個錯誤。如果你要複製外部數組的值到結構體中的數組裡,要使用memcpy函數。如果你只想傳遞位址,那就把這個參數定義成指標。

Peter_Zhu

直接賦值?難道不是應該用strcpymemcpy嗎?如果想直接=,應該用std::string,而不是char[]。

熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板