sizeof
運算子
就類型 char
的大小而言,會產生其運算元的大小。
注意
如需有關 sizeof ...
運算子的資訊,請參閱省略符號和變可變參數範本。
語法
sizeof unary-expression
sizeof ( type-name )
備註
sizeof
運算子的結果是 size_t
類型,這是 Include 檔 <stddef.h> 中定義的整數類資料類型。 這個運算子可以避免在您的程式中指定與電腦相關的資料大小。
sizeof
的運算元可以是下列其中一項:
類型名稱。 若要以類型名稱來使用
sizeof
,該名稱必須以括號括住。運算式。 與運算式搭配使用時,是否用括號來指定
sizeof
都可以。 並不會評估運算式。
將 sizeof
運算子套用至 char
類型的物件時,會產生 1。 將 sizeof
運算子套用至陣列時,會產生該陣列中的位元組總數,而不是陣列識別項所表示的指標大小。 若要取得陣列識別項所表示的指標大小,請將它當作參數傳遞至使用 sizeof
的函式。 例如:
範例
#include <iostream>
using namespace std;
size_t getPtrSize( char *ptr )
{
return sizeof( ptr );
}
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
運算子套用至 class
、struct
或 union
類型時,結果是該類型物件中的位元組數,加上為了讓成員對齊字邊界而加入的任何填補位元組。 在加上個別成員的儲存需求之後,其結果不一定會對應計算的大小。 /Zp 編譯器選項和 pack pragma 會影響成員的對齊邊界。
sizeof
運算子絕不會產生 0,即使用於空類別也一樣。
sizeof
運算子不能與下列運算元搭配使用:
函數。 (不過,
sizeof
可套用於函式的指標。)位元欄位。
未定義的類別。
void
類型。以動態方式配置的陣列。
外部陣列。
不完整的類型。
以括號括住的不完整類型名稱。
將 sizeof
運算子套用至參考時,結果相同,就像 sizeof
套用至物件本身一樣。
如果可變大小的陣列是結構的最後一個項目,sizeof
運算子會傳回不含陣列的結構大小。
sizeof
運算子經常用來計算陣列中的元素數目,所使用的運算式格式如下:
sizeof array / sizeof array[0]
另請參閱
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應