1. 程式人生 > 其它 >C++:17---sizeof運算子

C++:17---sizeof運算子

技術標籤:指標資料結構c++java

  • 功能:以位元組位單位,返回一個表示式或一個數據型別所佔的位元組數

  • 返回值型別:是size_t型別

  • sizeof有無括號:

    • sizeof不加括號,後面不可以直接跟資料型別

    • sizeof加括號,後面既可以跟表示式也可以跟資料型別

  • 注意事項

    • 對引用型別執行sizeof運算得到被引用物件所佔空間的大小

    • 對指標執行sizeof運算得到指標本身所佔空間大小

    • 對解引用指標執行sizeof運算得到指標指向指向的物件所佔空間的大小,指標不需有效

    • 對陣列執行sizeof運算得到整個陣列所佔空間的大小,等價於對陣列中所有的元素各執行一次sizeof運算並將結果求和。注意,sizeof運算不會把陣列轉換指標來處理

    • 對string物件或vector物件執行sizeof運算只返回該型別固定部分的大小,不會計算物件中的元素佔用了多少空間

    二話不說,來看程式碼:

    #include <iostream>
    #include <string>
    using namespace std;
    int main(){
      int a = 12;
      short int b = 12;
      float   c = 12.0f;
      double  d = 12.333;
      long  int e = 123;
            long long int  f = 1233;
      char ch = '0';
      
      cout << sizeof a << ","  << sizeof b << ","  << sizeof c << ","  << sizeof d << ","  << sizeof e << ","  << sizeof f << ","  << sizeof ch <<endl;
    
    
      uint8_t   ua = 1;
      uint16_t  ub = 2;
       uint32_t  uc = 3;
      uint64_t  ud = 4;
    
    
      cout << sizeof ua << ","  << sizeof ub << ","  << sizeof uc << ","  << sizeof ud <<endl;
    
    
      char* pa = &ch;
      int*  pb = &a;
      
      cout <<sizeof pa << ","  << sizeof pb <<endl;  
      uint32_t& p = uc;
      cout << sizeof p <<endl;
            
            int   array[10];
      cout << sizeof array <<endl;
    
    
      string  s = "hello world";
      string  s_empty; 
      cout << sizeof s << ","  << sizeof s_empty << endl;
      return 0;
    }