C++:17---sizeof運算子
阿新 • • 發佈:2020-12-23
功能:以位元組位單位,返回一個表示式或一個數據型別所佔的位元組數
返回值型別:是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; }