1. 程式人生 > >c++檔案讀取之write引數理解

c++檔案讀取之write引數理解

在網上查了一些資料,瞭解了write函式。

write(constant char*content,int size)引數的解釋:

-------------content是 char型別的一個指標

-------------size指的是這個content內容的大小

面對這個函式,心中有以下疑問:

1、為什麼content是一個char型別的指標,而不是其他型別的指標

理解: 首先char型別是一個byte的,而一個byte是記憶體中最小的單元,任何其他的c++的基本型別都可以轉化為一個byte或者幾個byte,也就說可以轉化為一個char型別或者幾個char.  size引數就是計算content有多少個byte,這樣就把content裡面所有的byte都寫入檔案了,在這裡我們暫時不考慮型別的問題,也就是說不考慮傳給content的是int、還是double型別,實際上也不用考慮是什麼型別,因為這個函式的目的就是把content裡面的所有byte存到檔案裡面就可以了。

2、為什麼content是一個指標,而不是一個數組或者其它的什麼的

理解:我們知道在c++裡面,不管是傳遞指標還是陣列,實際上傳遞的都是地址,都是值傳遞,只不過這個值是一個地址(這個地址在指標變數裡面儲存)。陣列傳遞的就是首地址,所以在write裡面傳遞指標,就是把首地址(int型和double型的首地址就是他們本身的地址)傳進去,然後再根據size的大小,把這個首地址所指的內容一個byte一個byte的向檔案裡面寫東西。

3、若傳遞給content的是一個物件,並且物件裡面有指標,這個write函式就會有問題,為什麼呢?

理解:這個就與這個size有關了,一般情況下我們就算大小就是用sizeof()這個操作來計算的,如果物件裡面有指標,這個sizeof()計算的不是這個物件的真正的大小。所以前後不一致造成問題。