size_t是什麼型別的?
為了增強程式的可移植性,便有了size_t,它是為了方便系統之間的移植而定義的,不同的系統上,定義size_t可能不一樣。
在32位系統上 定義為 unsigned int 也就是說在32位系統上是32位無符號整形。在64位系統上定義為 unsigned long 也就是說在64位系統上是64位無符號整形。size_t一般用來表示一種計數,比如有多少東西被拷貝等。例如:sizeof操作符的結果型別是size_t,該型別保證能容納實現所建立的最大物件的位元組大小。 它的意義大致是「適於計量記憶體中可容納的資料專案個數的無符號整數型別」。所以,它在陣列下標和記憶體管理函式之類的地方廣泛使用。
《unix 高階環境程式設計》裡面是這麼說的:
原始系統資料型別
前面所示的g e t p i d函式的原型定義了其返回值為p i d _ t型別,這也是p o s i x中的新規定。
u n i x的早期版本規定此函式返回一整型。與此類似, r e a d和w r i t e返回型別為s s i z e _ t的值,並
要求第三個引數的型別是s i z e _ t。
以_ t結尾的這些資料型別被稱為原始系統資料型別。它們通常在標頭檔案< s y s / t y p e s . h >中定
義(標頭檔案< u n i s t d . h >應已包括該標頭檔案)。它們通常以c typedef說明加以定義。t y p e d e f說明在c
語言中已超過1 5年了(所以這並不要求ansi c),它們的目的是阻止程式使用專門的資料型別
(例如i n t , s h o r t或long) 來允許對於一種特定系統的每個實現選擇所要求的資料型別。在需要儲存
程序i d的地方,分配型別為p i d _ t的乙個變數(注意,程式1 - 5已對名為p i d的變數這樣做了)。在
各種不同的實現中,這種資料型別的定義可能是不同的,但是這種差別現在只出現在乙個頭文
件中。我們只需在另乙個系統上重新編輯應用程式。
C語言 size t詳解
1 sizeof返回的必定是無符號整形,在標準c中通過 typedef 將返回值型別定義為size t.若用printf輸出size t型別時,c99中定義格式符 zd 若編譯器不支援可以嘗試 u或 lu.sizeof,獲取運算元占用的記憶體空間位元組數,返回型別size t strlen,獲取字元...
C語言中size t和size type 的區別
1 size tsize t是用於陣列的下標值型別,也可以用來 接收 sizeof操作符的返回值。既然是無符號的,一般只能用在沒有負數的地方了.比如我們的年齡啊,身高啊.在c標準函式中,最一般的就是strlen,返回字元數.字元數當然不可能是負的啊,所以函式原型是size t strlen cons...
C語言指標說明
今天在閱讀 時發現一下幾行 define gpbcon volatile unsigned long 0x56000010 define gpbdat volatile unsigned long 0x56000014 define gpfcon volatile unsigned long 0x5...