sizeof基礎
在C語言中,sizeof是一個操作符(operator),而不是函數!其用于判斷數據類型或者表達式長度(所占的內存字節數)。其有兩種表達形式:
(1)sizeof(類型說明符)
(2)sizeof 表達式
我們通常使用第(1)種形式。
其返回值類型為size_t,在頭文件stddef.h中定義。這是一個依賴于編譯系統的值,一般定義為:
typedef unsigned int size_t;
首先確定我們當前編譯環境中C語言各個基本數據類型在內存中所占字節數,我這里是32bit編譯環境:
我們這里的輸出結果為:
sizeof典型問題
sizeof看起來似乎很簡單,那來看看下面這段代碼,你能做對幾個:
實際運行 輸出結果為:
簡要分析:
(1)sizeof(char) 的值為1。因為char類型數據在內存中占1字節。
(2)sizeof(char*)的值為4。因為char*代表一個指針,在32bit環境中為4字節,也即unsigned int的字節長度。
(3)sizeof('a')的值為4。因為此處‘a’是獨立存在的一個字符(沒有賦值給其它變量),實際上就是一個整型數,占4個字節,即此處‘a’對應的ascii碼的十進制為整數97。但是需要注意的是,若有如下定義:
char ch = 'a';
則此處ch的字節數sizeof(ch)的值為1,而不是4。
(4)sizeof(*s+0)的值為4,因為'h'+0 轉化為int,占4字節。此處涉及到類型轉換的問題。即不同類型的數據進行運算時,會首先轉換成相同數據類型。轉換規則為(圖片來源于網絡):
(5)sizeof(*s)的值為1,因為此處*s為字符串s的第1個字符‘h’(注意與第三點區分開來,這里是有用char來修飾的),所以所占字節長度為1。
(6)sizeof(s)的值為4,同(2),此處s是一個指針,在32bit環境中為4字節,也即unsigned int的字節長度。
-
內存
+關注
關注
8文章
3103瀏覽量
74918 -
C語言
+關注
關注
180文章
7628瀏覽量
139958
發布評論請先 登錄
必看!15個C語言常見陷阱及避坑指南
深入理解C語言:循環語句的應用與優化技巧

邏輯異或運算符在Python中的用法
C語言指針運算符詳解
技術干貨驛站 ▏深入理解C語言:編程高手必備,全方位解析運算符的核心技能!

評論