1. 程式人生 > >size_t 和 int 的區別

size_t 和 int 的區別

size_t

size_t是一些C/C++標準在stddef.h中定義的。這個型別足以用來表示物件的大小。size_t的真實型別與作業系統有關。為了增強程式的可移植性,便有了size_t,它是為了方便系統之間的移植而定義的,不同的系統上,定義size_t可能不一樣。

size_t在32位系統上定義為 unsigned int 也就是說在32位系統上是32位無符號整型。在64位系統上定義為 unsigned long 也就是說在64位系統上是64位無符號整形。size_t一般用來表示一種計數,比如有多少東西被拷貝等例如:sizeof操作符的結果型別是size_t,該型別保證能容納實現所建立的最大物件的位元組大小。 它的意義大致是“適於計量記憶體中可容納的資料專案個數的無符號整數型別”。

所以,它在陣列下標和記憶體管理函式之類的地方廣泛使用

ssize_t 和size_t類似,但必需是signed(表示 signed size_t型別), 用來表示可以被執行讀寫操作的資料塊的大小

size_t 和 int 比較

  • size_t在32位架構定義為:typedef   unsigned int size_t;
  • size_t在64位架構中被定義為:typedef  unsigned long size_t;
  • size_t是無符號的,並且是平臺無關的,表示0-MAXINT的範圍;int為是有符號的;
  • int在不同架構上都是4位元組,size_t在32位和64位架構上分別是4位元組和8位元組,在不同架構上進行編譯時需要注意這個問題。
  • ssize_t有符號整型,在32位機器上等同與int,在64位機器上等同與 long int.