tft每日頭條

 > 圖文

 > c語言sizeofunion用法

c語言sizeofunion用法

圖文 更新时间:2024-10-13 09:18:41

sizeof()關鍵字

  • sizeof()怎麼用?很多剛剛接觸sizeof總以為是一個函數,因為它後面有括号。接下來我們一起來剖析一下這個被冤枉的關鍵字。
  • 其實我們不知道他是32個關鍵字的其中一個,我們也可以利用其它的辦法來确定他到底是不是函數,首先來看下面的代碼:

c語言sizeofunion用法(C語言中被冤枉的關鍵字sizeof)1

int i=0;

(A)sizeof(int) ; (B)sizeof(i);

(C)sizeof int; (D)sizeof i;

可以很肯定的是(A)(B)的值都是4,那你想一想(C)(D)的值到底是多少呢?感興趣的可以先在自己的編譯器上打一下代碼來驗證自己的想法。

  • 在32位的系統中通過visual C 6.0或者任意編譯器的調試我們其實都可以發現(D)的值也是4,到這裡你是不是覺得很奇怪,為什麼sizeof不用括号同樣可以計算出來,同樣的在這裡你就應該把它和函數區分開來,很清楚地知道他其實真的不是函數,如果是函數你覺得吧後面的括号省略掉也可以運行吧?我們想不可能吧!
  • 最後我們來看看最後一個(C)的情況,我想如果不出意外的話應該是搬一起報錯了吧?本着遇到錯誤就解決錯誤的心理,我們來探讨一下為什麼他會出錯,我們好好地看一下C答案表示的是什麼意思:(C)sizeof int 這是什麼玩意?int的前面加一個關鍵字?表示什麼我們不知道,但是明顯不正确,一般在int前面我們都會加 unsigned 、const 等關鍵字,但是真的不能加sizeof。

c語言sizeofunion用法(C語言中被冤枉的關鍵字sizeof)2

記住

  • sizeof在計算變量所占的空間大小時,括号其實是可以省略的。
  • 一般情況下sizeof是在編譯的時候求值(C99計算柔性數組所占空間情況除外),所以sizeof(i )并不會引起什麼壞的後果,但是沒有意義呀,因為i和i 的類型一樣,所以就沒有必要寫這樣迷惑的代碼。
  • “sizeof(i="123456")”,這樣的代碼也是不被允許的,因為i還是原來的值并不會在括号裡面把它賦值為123456,總之你要注意的一點就是sizeof裡面的括号不要哦有任何的運算符。

c語言sizeofunion用法(C語言中被冤枉的關鍵字sizeof)3

自測題

在這裡我們一起來共同探讨幾個比較有意思的C語言筆試題目如果你覺得毫無壓力那麼恭喜你,你對sizeof的理解以及比較透徹:int *p=NULL;

sizeof(p); 的值是多少?

sizeof(*p);呢?

int a[100];

sizeof(a);的值是多少?

sizeof(a[100]);呢? //注意是本列的代碼

sizeof(&a);這樣呢?

sizeof(&a[0]);還有這樣的呢?

int b[100];

int fun (int b[100])

{sizeof(b);} 這樣的值又是多少?

在這裡還是很希望各位能夠慢慢地把這幾道筆試題做出來,技術就是不斷的日積月累加油各位!

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关圖文资讯推荐

热门圖文资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved