共用方式為


將 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]

請參閱

參考

一元 (unary) 運算子的運算式

C + + 關鍵字