指標相關的預定義型別

2021-07-09 22:31:00 字數 958 閱讀 9028

size_t:用於安全地表示長度

ptrdiff_t:用於處理指標算術運算,表示兩個指標差值的可移植方式。

intptr_t/uintprt_t:用於儲存指標位址

size_t型別表示c中任何物件所能達到的最大長度。它是無符號整數,因為負數在這裡沒有意義,它的目的是提供一種可移

植的方法來宣告與系統可定址的記憶體區域一致的長度

intptr_t/uintprt_t提供一種可移植且安全的方法宣告指標,而且和系統中使用的指標長度相同,對於把指標轉化成整數形式

來說很有用。uintptr_t是intptr_t 的無符號版本,對於大部分操作,用intptr_t比較好,uintprt_t不像intptr_t那樣靈活 如:

int num;

intprt_t *pi = #

如果像下面那樣試圖把整數字址賦給uintptr_t型別的指標,會得到乙個語法錯誤

uintptr_t *pu = #

error:invalid conversion from 'int*' to 'uintprt_t*' [-fpermissive])

用強制型別轉換賦值可以:

intprt_t *pi = #

uintptr_t *pu = (uintptr_t*)#

如果不轉換型別,不能將uintprt_t用於其他型別:

char c;

uintptr_t *pc = (uintptr_t*)&c; 當可移植性和安全性變得重要時,就應該使用這些型別。

避免把指標轉換成整數,如果指標是64位,整數只有4位元組時就會丟失資訊。

早期的intel處理器採用16位的分段架構,近指標和遠指標也是相對的。今天的虛擬記憶體架構上就不是這樣了。遠指標和近指標是

c標準的擴充套件,用來支援早期的intel處理器的分段架構。近指標一次只能定址64kb的記憶體,遠指標最多可以定址1mb記憶體,但是比

近指標慢,巨指標是規範化過的遠指標,使用尺可能高的段

windows預定義型別

typedef int bool,pbool,lpbool typedef unsigned char byte,pbyte,lpbyte typedef byte boolean,pboolean typedef wchar t wchar,pwchar typedef wchar bstr ty...

C 預定義型別

開發工具與關鍵技術 microsoft visual studio 2015 net預定義引用型別是物件和字串。型別物件是所有其它型別的最根本的基礎型別,而型別字串要 用來說明 unicode字串資料。預定義資料型別包括有符號和無符號整數型別 浮點數型別 二進位制 字元和十進位制型別。有符號整數型別...

PHP日曆函式相關預定義常量

常量名值說明 cal gregorian 0格里高利歷 公曆 陽曆 cal julian 1儒略曆 cal jewish 2猶太歷 cal french 3法國共和歷,gregorian曆法的1792年9月22日到1806年9月22日。常量名值說明 cal dow dayno 0數字格式的星期,0 ...