將 sizeof 運算子
產生的型別的大小相對於其運算元大小char。
sizeof unary-expression
sizeof ( type-name )
備註
將sizeof運算子屬於型別 size_t,包含檔案 STDDEF 中所定義的整數型別。H.此運算子可讓您避免在程式中指定電腦相關的資料大小。
若要為運算元sizeof可以是下列其中一項:
型別名稱。若要使用sizeof與型別名稱,名稱必須用括弧括起來。
這是一個運算式。當運算式中,所使用sizeof可以指定為不論是否有括號。無法評估運算式。
當sizeof運算子已套用至型別的物件char,它會產生 1。當sizeof運算子已套用至陣列,它會產生該陣列,而非陣列識別項所表示的指標大小中的位元組總數。若要取得陣列識別項所表示指標的大小,它當做參數傳遞至函式使用sizeof。例如:
範例
// expre_sizeof_Operator.cpp
// compile with: /EHsc
#include <iostream>
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
using namespace std;
int main()
{
char szHello[] = "Hello, world!";
cout << "The size of a char is: "
<< sizeof( char )
<< "\nThe length of " << szHello << " is: "
<< sizeof szHello
<< "\nThe size of the pointer is "
<< getPtrSize( szHello ) << endl;
}
範例輸出
The size of a char is: 1
The length of Hello, world! is: 14
The size of the pointer is 4
當sizeof運算子套用至類別, struct,或等位型別,結果就是該型別的物件中的位元組數目,加上任何與邊框距離中加入對齊在字緣上的成員。結果不一定對應的計算方式為將個別成員的儲存體需求的大小。/Zp 編譯器選項和封包 pragma 影響成員的對齊邊界。
sizeof運算子永遠不會產生 0,甚至是空的類別。
sizeof運算子不適用於下列運算元:
函式。(不過, sizeof可套用至函式的指標。)
位元的欄位。
未定義的類別。
The type void.
動態配置的陣列。
外部的陣列。
不完整的型別。
括弧括住的名稱不完整的型別。
當sizeof運算子已套用至參考,產生結果就如同sizeof有已套用到物件本身。
如果將可變大小的陣列是一種結構,最後一個項目 sizeof 運算子會傳回結構,而陣列的大小。
sizeof運算子常被用來計算陣列使用表單的運算式中的項目數:
sizeof array / sizeof array[0]