程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> C++ >> C++入門知識 >> C++ sizeof 操作符的用法總結

C++ sizeof 操作符的用法總結

編輯:C++入門知識

在VC中,sizeof有著許多的用法,而且很容易引起一些錯誤。下面根據sizeof後面的參數對sizeof的用法做個總結。

 


A.參數為數據類型或者為一般變量:

例如sizeof(int),sizeof(long)等等。

這種情況要注意的是不同系統系統或者不同編譯器得到的結果可能是不同的。

例如int類型在16位系統中占2個字節,在32位系統中占4個字節。

 


B.參數為數組或指針:

int a[50]; //sizeof(a)=4*50=200;求數組所占的空間大小

int *a=new int[50];// sizeof(a)=4; a為一個指針,sizeof(a)是求指針的大小,在32位系統中,當然是占4個字節。

 


C.參數為結構或類:

Sizeof應用在類和結構的處理情況是相同的,需要考慮字節對齊(參加另一篇文章:C++自定義結構體和類 內存對齊)。另外有幾點需要注意:

第一、結構或者類中的靜態成員不對結構或者類的大小產生影響,因為靜態變量的存儲位置與結構或者類的實例地址無關。

第二、沒有成員變量的結構或類(非虛)的大小為1,因為必須保證結構或類的每一個實例在內存中都有唯一的地址。

第三、包含虛函數的類或者虛繼承的類,需要算上虛表指針的占的4個字節。

 


下面舉例說明:

Class Test{int a;static double c};//sizeof(Test)=4.

Test *s;//sizeof(s)=4,s為一個指針。

Class test1{ };//sizeof(test1)=1;

Class test2{ virtual void print(){}};//sizeof(test2)=4;

 

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved