在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應用在類和結構的處理情況是相同的。但有兩點需要注
意,第一、結構或者類中的靜態成員不對結構或者類的大小產生影響,因為靜態變數的存
儲位置與結構或者類的例項位址無關。
第二、沒有成員變數的結構或類的大小為1,因為必須保證結構或類的每一
個例項在記憶體中都有唯一的位址。
下面舉例說明,
class test;//sizeof(test)=4.
test *s;//sizeof(s)=4,s為乙個指標。
class test1;//sizeof(test1)=1;
d. 引數為其他。下面舉例說明。
int func(char s[5]);
sizeof(func(「1234」))=4//因為func的返回型別為int,所以相當於
//求sizeof(int).
以上為sizeof的基本用法,在實際的使用中要注意分析vc的分配變數的分配策略,這
樣的話可以避免一些錯誤
sizeof用法總結
在vc中,sizeof有著許多的用法,而且很容易引起一些錯誤。下面根據sizeof後面的 引數對sizeof的用法做個總結。a 引數為資料型別或者為一般變數。例如sizeof int sizeof long 等等。這種情 況要注意的是不同系統系統或者不同編譯器得到的結果可能是不同的。例如int型別在...
sizeof 用法總結
sizeof 功能 計算資料空間的位元組數 1.與strlen 比較 strlen 計算字元陣列的字元數,以 0 為結束判斷。而sizeof計算資料 包括陣列 變數 型別 結構體等 所佔記憶體空間,用位元組數表示 2.指標與靜態陣列的sizeof操作 指標均可看為變數型別的一種。所有指標變數的siz...
sizeof用法總結
sizeof用法總結 以下執行環境都是一般的,在32位編譯環境中 1,基本資料型別的sizeof cout 再看示例 pragma pack push 將當前pack設定壓棧儲存 pragma pack 2 必須在結構體定義之前使用 struct s1 struct s3 pragma pack p...