用來查詢型別或物件在記憶體中所佔的位元組數。
unsign int(無符號整型)
sizeof(type_name); //sizeof(型別/object)
sizeof object; //物件
舉例:
int i =0;
sizeof
(int);
//ok
sizeof
int;
//error
sizeof
(i);
//ok
sizeof i;
//ok
首先宣告,sizeof()返回值除了和型別有關,還與編譯器有關。結果有可能不同。
以我們經常用到的舉例
sizeof
(char);
//return 1
sizeof
(int);
//return 4
sizeof
(double);
//return 8
在計算物件所佔型別大小時,相當於計算物件的型別的大小(陣列除外);
int i =1;
sizeof i;
//i的型別是int,所以等價於sizeof(int)
sizeof0;
//0的型別是int,所以也等價於sizeof(int)
也可以寫成sizeof(object); 和不帶括號的等價。
這裡的object包括很多,例如:常量、變數、函式呼叫、陣列、指標、結構體等。
sizeof
'a';
//char型別,return 1
sizeof1;
//int型別,return 4
sizeof
1.0;
//double型別,return 8
sizeof
"abcd"
//字串型別,return 5
//sizeof()和strlen()在對字串做運算時是有區別的
//sizeof(字串)計算結尾的'\0';
//而strlen(字串)不計算算結尾的'\0'
//即二者相差1
int
fun(
)void
main()
輸出:4
//我的編譯器是64位
sizeof
(char*)
;//return 8
sizeof
(int*)
;//return 8
sizeof
(double*)
;//return 8
#include
void
main()
;char a2[10]
=;char a3=
"hello"
;//字元陣列,末尾預設有'\0'
printf
("%d\n"
,sizeof
(a1));
printf
("%d\n"
,sizeof
(a2));
printf
("%d"
,sizeof
(a3));
}輸出:110
6
要想求陣列的大小,有常見的兩種方法:
int a[5]
=;sizeof
(a)/
sizeof
(int);
//總長度/單個元素的長度
sizeof
(a)/
sizeof
(a[0])
;//總長度/第乙個元素的長度
sizeof
(fun)
;//error
void
fun2()
sizeof
(fun2()
);//error
struct s
;sizeof
(s.f1)
;//error
參考文獻:
1.
C語言 sizeof函式詳解
sizeof,乙個其貌不揚的傢伙,引無數菜鳥竟折腰,小蝦我當初也沒少犯迷糊,秉著 辛苦我乙個,幸福千萬人 的偉大思想,我決定將其盡可能詳細的總結一下。但當我總結的時候才發現,這個問題既可以簡單,又可以複雜,所以本文有的地方並不 適合初學者,甚至都沒有必要大作文章。但如果你想 知其然,更知其所以然 的...
C語言之 sizeof 和strlen 函式
sizeof 既是乙個關鍵字,還是乙個運算子。而不是乙個函式。sizeof的作用週期是編譯階段。sizeof的作用是用來返回 裡面物件占用的記憶體位元組數。其計算物件型別可以為 資料型別 變數 函式 陣列 指標等 ref strlen是乙個c庫函式 string.h 用來返回乙個字串的長度 注意,字...
C語言詳解sizeof
一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...