今天看了一篇文章叫《c/c++刁鑽問題各個擊破之細說sizeof》,然後自己想寫一寫。
sizeof的作用:
1.求基本型別和復合型別所佔的記憶體位元組數
如:sizeof(int)、sizeof(int *)
2.求某個變數或者常量所佔的記憶體位元組數
如:int i;
sizeof(i)
sizeof(5)
sizeof(5l)
3.求表示式所佔的記憶體位元組數,但是不執行括號裡面的表示式
如:size(i++), i的值不變
4.求靜態陣列所佔的記憶體位元組數,這裡的陣列不能是指標,就是說所定義的陣列和所用的sizeof的地方是同乙個函式
如:int a[10]
5.求函式返回值型別所佔位元組數,但是不呼叫函式
誤區:1.sizeof是運算子不是函式
2.用sizeof求到的是乙個unsigned int 的值
3.當陣列是指標的時候求到的是指標所佔的記憶體位元組數
4.不可以求void型別所佔記憶體位元組數,可以求void型別指標所佔記憶體位元組數
sizeof(void)不可以
sizeof(void *)可以
下面是舉例:
1.求基本型別和復合型別所佔的記憶體位元組數
#includeint main()
#includestruct size
;int main()
2.求陣列所佔位元組數,但不能求動態陣列和傳指標的陣列
#includeint main()
void f(int a)
3.只求表示式型別,不求值
#includeint main()
4.求函式返回型別所佔記憶體數,不呼叫函式
#includeint main()
int f()
c語言中的sizeof運算子
sizeof運算子在編譯期間執行 除非運算元是乙個可變長度陣列 所以不會導致執行時開銷 sizeof運算元是乙個陣列名時返回的是該陣列所佔位元組總個數,而非陣列元素。sizeof運算子求陣列長度 int a 5 sizeof a sizeof a 0 sizeof運算子的運算元只有是乙個真實的陣列名...
細說c語言中的sizeof運算子
細說c語言sizeof運算子 於哈爾濱的乙個地下室旅店,2011 9 11下午 所有開始奔波找工作的畢業生們,加油。sizeof即不是巨集定義,也不是函式,那麼好吧,他是什麼?答曰 運算子 在設計計算物件大小的 中,推薦使用sizeof去去得物件 基礎型別,struct,union等 的大小。cha...
細說c語言中的sizeof運算子
細說c語言sizeof運算子 於哈爾濱的乙個地下室旅店,2011 9 11下午 所有開始奔波找工作的畢業生們,加油。sizeof即不是巨集定義,也不是函式,那麼好吧,他是什麼?答曰 運算子 在設計計算物件大小的 中,推薦使用sizeof去去得物件 基礎型別,struct,union等 的大小。cha...