回覆列表
  • 1 # 錢布斯

    產生與 char 型別的大小有關的運算元大小。

    說明

    有關 sizeof ... 運算子的資訊,請參閱省略號和可變引數模板。

    sizeof unary-expression sizeof ( type-name )

    備註

    sizeof 運算子的結果為 size_t 型別,它是包含檔案 STDDEF.H 中定義的整數型別。 利用此運算子,你可以避免在程式中指定依賴於計算機的資料大小。

    sizeof 的運算元可以是下列項之一:

    型別名稱。 若要將 sizeof 用於型別名稱,則該名稱必須用括號括起。

    一個表示式。 當用於表示式時,無論是否使用括號都可指定 sizeof。 不計算表示式。

    當 sizeof 運算子應用到 char 型別的物件時,它將生成 1。 當 sizeof 運算子應用到陣列時,它將產生該陣列的位元組總數,而非由陣列識別符號表示的指標的大小。 若要獲取由陣列識別符號表示的指標的大小,請將其作為引數傳遞給使用 sizeof 的函式。 例如:

    示例

    #include

    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 雜注會影響成員的對齊邊界。

    sizeof 運算子永遠不會產生 0,即使對於空類也是如此。

    sizeof 運算子不能用於以下運算元:

    函式。 (但是,sizeof 可應用於指向函式的指標。)

    位域。

    未定義的類。

    void 型別。

    動態分配的陣列。

    外部陣列。

    不完整型別。

    帶括號的不完整型別的名稱。

    當 sizeof 運算子應用於引用時,結果與 sizeof 應用到物件本身時的結果相同。

    如果某個未確定大小的陣列是結構的最後一個元素,則 sizeof 運算子將返回沒有該陣列的結構的大小。

    sizeof 運算子通常用於透過使用以下形式的表示式計算陣列中的元素數量:

  • 中秋節和大豐收的關聯?
  • 蜀味石鍋魚怎麼樣?