在學習sizeof運算子的時候,它的值型別為size_t,結果在使用printf函式顯示的時候,憑空多了很多警告,有點不不理解,為啥搞這麼複雜?直接用個int型別多省事?
問題1:為啥不用int而是size_t這麼古怪的型別,搞出好多型別不匹配的警告?
在資料只有8位的年代,位址率先進入10位,12位,在資料16位的年代,位址也已經進入了20位,24位。目前的int普遍是32位,而位址線寬度在主流平台中都是64位。
size_t為什麼存在?因為無論int還是unsigned都很可能小於位址線寬度需要的大小,所以必須有個size_t。
問題2:為什麼size_t後面要什麼有個_t?
答:_t的意思就是type。關於為什麼要加_t。乙個型別後面加了_t說明了這是乙個posix或gnu保留型別,防止命名空間汙染(namespace pollution)。
不然標準庫里新加了什麼型別說不定就和使用者已經定義的型別重名了。所以posix規定自己擴充套件的型別都加_t,這樣只要使用者定義型別的時候不加_t就不會衝突。
pragma詳細解釋
pragma是預處理指令,它的作用是設定編譯器的狀態或者是指示編譯器完成一些特定的動作。pragma指 令對每個編譯器給出了乙個方法,在保持與c和c 語言完全相容的情況下,給出主機或作業系統專有的特徵。依據定義,編譯指示是機器或作業系統專有的,且對於每個編譯器都是不同的。其格式一般為 pragmap...
mmap詳細解釋
mmap系統呼叫並不是完全為了用於共享記憶體而設計的。它本身提供了不同於一般對普通檔案的訪問方式,程序可以像讀寫記憶體一樣對普通檔案的操作。而posix或系統v的共享記憶體ipc則純粹用於共享目的,當然mmap 實現共享記憶體也是其主要應用之一。mmap系統呼叫使得程序之間通過對映同乙個普通檔案實現...
TableView詳細解釋
建立 uitableview datatable uitableview alloc initwithframe cgrectmake 0,0,320,420 datatable setdelegate self datatable setdatasource self self.view adds...