搜尋

首頁  >  問答  >  主體

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;
 

这是什么情况啊

PHPzPHPz2814 天前651

全部回覆(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

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

    回覆
    0
  • 取消回覆