sizeof計算的是在棧中分配的記憶體大小。
1.sizeof的使用形式:sizeof(var_name)或者sizeof var_name。變數名可以不用括號括住:sizeof a;資料型別必須用括號括起來:sizeof(int)。
2.sizeof可以對表示式求值:sizeof(2+3.14),實際是sizeof(double)。
3.sizeof可以對函式呼叫求值,實際上是對返回值型別求值;對引用的sizeof,其實是對其所繫結的物件的sizeof。
4.以下情況不能用sizeof進行求值。
1)不能對函式名求值
2)不能對不確定返回值的型別求值,如void
3)位域成員不可以使用sizeof求值
5.sizeof的結果是size_t,它被定義為unsigned int型別。該型別保證容納顯示所建立的最大物件的位元組大小。
一般,在32位編譯器下:
sizeof(int):4
sizeof(short):2
sizeof(long):4
sizeof(long long):8
sizeof(float):4
sizeof(double):8
sizeof(char):1
sizeof(p):4,(p為指標) (32位系統下指標的sizeof是4位元組,64位下是8位元組)
在不同的系統中這些值不一樣。
6.sizeof與strlen()比較,在計算字元陣列時,sizeof包含'\0',strlen()不包含'\0'。
7.對陣列sizeof可以計算陣列的大小。
8.陣列作為形參時,陣列名的sizeof是4個位元組。
9.32bit系統中,int **a[3][4];sizeof(a)=48。
10.對於c字串,需要牢記c/c++中乙個漢字佔兩個位元組(linux下3個位元組),且字串尾有空字元。
11.列舉的空間計算
enum只是定義了乙個常量集合,裡面沒有「元素」,而列舉是當做int型別儲存的,故列舉型別的sizeof值為4。
12. 含靜態變數、虛函式和位元組對齊的類的空間計算。
C 版本知多少
以前一直沒搞懂c 到底有些什麼版。到底咋回事,一位研究生同事還問過我c 和visual c 有什麼關係?坑嗲了吧?他都做c 開發的人都不曉得。這裡來解釋一下 microsoft visual c 6 非託管的開發工具 microsfot visual c net 基本.net的託管開發工具 borl...
C 過載解析 知多少?
在這裡先給大家提出乙個問題 編譯器怎麼知道我呼叫的這個函式應該是非模板函式?還是特化的模板函式?還是模板函式例項化?更或者是應該選擇哪乙個模板來例項化?可能上面的問題說起來有點繞,我用下面的 舉例吧 templatevoid func t a templatevoid func t a templa...
C 擴充套件方法知多少
前言 上篇 序列化效率比拼 誰是最後的贏家newtonsoft.json 介紹了下序列化方面的知識。看過demo的朋友可能注意到了裡面就用到過泛型的擴充套件方法,本篇打算總結下c 擴充套件方法的用法。博主打算分三個層面來介紹這個知識點,分別是 net內建物件的擴充套件方法 一般物件的擴充套件方法 泛...