出於好奇,當我們將它寫入(二進制)文件時,爲什麼我們要將某些東西轉換爲char *?當我們將它寫入文件時,爲什麼我們必須將所有東西都轉換爲char *?
2
A
回答
15
因爲寫入的典型I/O函數,需要一個指向char
的指針。這是因爲有人認爲這是談論存儲在二進制文件中的數據的最有代表性的方式;它只是一個機器最小的可尋址單詞,依次排列。 C類型的名稱是char
。
7
char*
僅表示指向字節序列開始的指針,這正是人們期望二進制文件包含的指針。
2
Unwind和vezult已經回答了你的問題,並且我假設你知道指針是什麼。但是,如果你想*把某些東西轉換成字符**作爲一種實際上以某種方式改變你的內存中的數據的操作(並且,例如,如果有大量數據可能需要更多時間),那麼注意不是這樣的:獲取指針的行爲。
2
你在說什麼fread()
和fwrite()
?他們讀取或寫入的數據以void*
(或const void*
)的形式傳遞,因此您不必轉換。
但是在使用C++時,如istream::read()
,則指向接收緩衝區的指針必須作爲char*
傳遞,因此不存在隱式轉換。
相關問題
- 1. C++:爲什麼我們不能將char **轉換爲const char **
- 2. 將`DataGrid`替換爲`GridView`時,我們必須改變什麼?
- 3. 爲什麼我的calloc無法將所有東西都歸零?
- 4. 爲什麼我們必須綜合?
- 5. 爲什麼我們必須將__block變量設置爲零?
- 6. 爲什麼當我嘗試將它們放入對方時,我的所有JQuery拖放對象都消失了?
- 7. 在java中將char轉換爲char - 我必須使用ASCII嗎?
- 8. 當我將它們轉換爲Set時,LinkedHashMap元素會發生什麼?
- 9. SWIFT:爲什麼我們必須將驚歎號放在:str.characters.index(of:「」)!
- 10. 爲什麼我們必須將克隆分配給新變量?
- 11. 爲什麼沒有東西寫入我的文件?
- 12. 當我將所有東西都改爲白色時,我的微調器仍然是黑色的,爲什麼>
- 13. 當我們有.java文件可用時,爲什麼我們需要JSP文件?
- 14. 爲什麼我必須將NSMutableArray強制轉換爲NSMutableArray?
- 15. 爲什麼.net 4.0將所有這些東西寫入DebugView?
- 16. 爲什麼我必須轉換變量?
- 17. 爲什麼我們必須寫頭緩存控制?
- 18. 當我們有點子時,爲什麼我們需要Anaconda?
- 19. Xgboost - 我們必須將整數轉換爲因子(如果它們只有0和1)
- 20. 我不能將它們轉換爲大寫
- 21. 爲什麼當我將它們傳遞給函數時,所有列表都沒有?
- 22. 爲什麼我們不能將字符串轉換爲stringbuffer?
- 23. 當我們要使用用戶輸入時,爲什麼我們必須清除ax註冊表?
- 24. 爲什麼所有的寫入都必須寫入主設備,爲什麼寫入從設備沒有意義?
- 25. 當我們將IClass轉換爲Class時,我們應該檢查NULL嗎?
- 26. 爲什麼我們必須同時符合UIViewController和UITableViewDataSource?
- 27. 何時以及爲什麼我們必須實現Comparable接口?
- 28. 爲什麼我們必須輸入vim〜/ .vimrc,爲什麼不只是vim〜.vimrc?
- 29. 當我們將json文件轉換爲python時,我們可以創建自定義標題到csv文件中
- 30. 爲什麼我們必須爲@SuppressWarnings(「unchecked」)使用中間變量?