C語言中的sizeof用法

2021-08-14 23:50:02 字數 1606 閱讀 2537

c語言中的sizeof是乙個很有意思的關鍵字,經常有人用不對,搞不清不是什麼。我以前也有用錯的時候,現在寫一寫,也算是提醒一下自己吧。反正現在來看,還在搞sizeof是什麼意思,怎麼用正確,還是有點搞笑,都經常用的東西,沒有理解透徹,就差的太遠了。

第一  sizeof是什麼

sizeof是c語言的一種單目操作符,如c語言的其他操作符++、--等,sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。這個運算元不好理解對吧?後面慢慢看就明白了。sizeof的返回值是size_t,在64位機器下,被定義為long unsigned int。

第二 sizeof如何使用

1、用於資料型別

使用形式: sizeof(type)。其中type如int 、double等。 例如sizeof(int)、sizeof(char*)、sizeof(double)。這個時候sizeof後面的型別必須用括號()包起來,不包起來是錯誤的,通過不了編譯。其中sizeof(void*)在64位下是8,而sizeof(void)是1。其實,在c語言中sizeof(函式),如sizeof(main),結果也是1。但是在c++中,sizeof(void)和sizeof(函式)都是非法的,通過不了編譯,後面c++就不說了,現在講c嘛。其實sizeof(函式),sizeof(void)雖然是1,但是是不正確的使用方式。

2、用於變數 

使用形式: sizeof(var)或sizeof var。當操作基本資料型別的時候,在我64位電腦的結果如下

sizeof(char) 1  

sizeof(char) 1

sizeof(short) 2

sizeof(int) 4

sizeof(long) 8

sizeof(float) 4

sizeof(double) 8

sizeof(long double) 16

sizeof(int*) 8

sizeof('a') 4

sizeof(1) 4

sizeof(1.0f) 4

sizeof(1.0) 8

sizeof "abc" 4

其中sizeof('a') 4有點奇怪哈。

當運算元是聯合型別時,sizeof是其最大位元組成員的位元組數。當運算元是結構型別時,sizeof是其成員型別的總位元組數,包括補充位元組在內。如下:

union  u  

u;

sizeof(u) = max(sizeof(c),sizeof(d)) = sizeof(1,8) = 8;

而sizeof結構體的時候,還要考慮對齊的問題:
struct s  

s;

在我的電腦上,sizeof(s)的大小是16。

基本上說的比較清楚了,但有些時候和函式引數相關的時候,還是要注意,比如

int calc(char a[10])  

int main()

; calc(a);

return 0;

}

列印的結果是8,而不是10,這個是要注意的。

C語言中sizeof 的用法

只要參加軟體研發的筆試 c c 幾乎都會涉及到sizeof 的用法,我昨天也遇到了,有的也會,但是真正sizeof 的核心還是沒有領會,今天上網,無聊中就看到了詳細的sizeof 的闡述,現在分享給大家。sizeof sizeof 一般形式為 sizeof object 也可以sizeof var ...

c語言中的sizeof

一 sizeof的概念 sizeof是c語言的一種單目操作符,如c語言的其他操作符 等。它並不是函式。sizeof操作符以位元組形式給出了其運算元的儲存大小。運算元可以是乙個表示式或括在括號內的型別名。運算元的儲存大小由運算元的型別決定。二 sizeof的使用方法 1 用於資料型別 sizeof使用...

C語言中的sizeof

一 sizeof是編譯器的內建指示符 不是函式 sizeof用於計算型別或變數所佔的記憶體大小 sizeof的值在編譯期就已經確定 sizeof用於型別 sizeof type sizeof用於變數 sizeof var 或 sizeof var int var 0 printf d n sizeo...