2017-02-22 50 views
0

我正在閱讀一些代碼,其中有時將整型參考值轉換爲const char *與ostream一起使用。將整型參考值轉換爲(const char *)有什麼作用,以及在C++中轉換爲char *和轉換爲const char *有什麼區別?

uint32_t val;// initialized by some value 
void a(ostream& os) const{ 
    os.write((const char*)&val, sizeof(val)); 
} 

1)將整型引用類型轉換爲(const char *)有什麼作用?

2)和使用(char *)& val一樣使用(const char *)?

2 *)如果沒有,有什麼區別?

+0

讓我們把它分解成更簡單的部分。 1.'const char *'和'char *'有什麼區別? 2.鑄造是做什麼的?選擇一個問題(或兩者)並詢問。 –

+0

'&val'是指向整數的指針;不是整數引用。 –

回答

1

char *const char *是不同的類型。 char *是指向char的指針,而const char *是指向不能通過指針修改的char的指針。

在您的示例(const char*)&val將採取val的地址,並將其視爲指向char的指針哪些數據無法修改。它保證write函數不會修改數據(但只是將它寫入其他地方)。作爲參數傳遞(char*)&val不能保證這一點。 write可以覆蓋您的val

+0

謝謝@Martin。但我承認這不是我想知道的。我編輯了標題並更詳細地闡明瞭問題。 – mallea