C語言 sizeof 運算子

2021-07-11 16:42:38 字數 1066 閱讀 6575

今天看了一篇文章叫《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...