size_t 類型


1 關於size_t定義

  size_t是一種數據相關的無符號類型,它被設計得足夠大以便能夠內存中任意對象的大小。在cstddef頭文件中定義了size_t類型,這個文件是C標准庫stddef.h頭文件的C++版本。

  在需要通過數組下標來訪問數組時,通常建議將下標定義size_t類型,因為一般來說在進行下標訪問時,下標都是正的。當然,也不是所有的下標訪問操作下標都是正的,比如以下代碼:

int a[10]={1,2,3,4,5,6,7,8,9,10};

int * ptr =&(a[4]);

cout<<ptr[-2]<<endl;

  這段代碼中對ptr進行了下標訪問,並且下標是負的,但是這個訪問並不是錯誤的,執行的結果是輸出3。

 

2 在Visual Studio2012中查看size_t 的定義

         在VS中,選中size_t,右鍵調出菜單,選擇“轉到定義”,會自動跳轉到size_t的定義位置。在我的機子上,跳到了的文件目錄:d:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\crtdefs.h。(這里為什么跳到了crtdef.h這個頭文件而不是上面說的cstddef頭文件?)

         來看看在windows下是如何定義這個size_t的:

#ifndef _SIZE_T_DEFINED

#ifdef  _WIN64

typedef unsigned __int64    size_t;

#else

typedef _W64 unsigned int   size_t;

#endif

#define _SIZE_T_DEFINED

#endif

  如上所示,size_t的定義是和系統相關的。

3 size_t作用

  顯然,size_t的取值與機器相關,某些情況下正確的使用size_t可以提高程序的可移植性和有效性。

4 一篇關於size_t的博客:why size_t matters

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM