国产成人v爽在线免播放观看,日韩欧美色,久久99国产精品久久99软件,亚洲综合色网站,国产欧美日韩中文久久,色99在线,亚洲伦理一区二区

學(xué)習(xí)啦>學(xué)習(xí)英語(yǔ)>專業(yè)英語(yǔ)>計(jì)算機(jī)英語(yǔ)>

c語(yǔ)言中sizeof的用法

時(shí)間: 長(zhǎng)思709 分享

  c語(yǔ)言中sizeof的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中sizeof的用法的用法,希望對(duì)你們有用。

  c語(yǔ)言中sizeof的用法的用法如下:

  sizeof其實(shí)就是一個(gè)運(yùn)算符,和那些+,-一樣的東西,在程序編譯的時(shí)候進(jìn)行解析轉(zhuǎn)換。雖然我們經(jīng)常見到sizeof后面跟著個(gè)小括號(hào),長(zhǎng)得和函數(shù)差不多,但它和函數(shù)完全是兩碼事。

  2,有什么用?

  sizeof其實(shí)就是用于告訴我們編譯器在為某一特定數(shù)據(jù)或者某種數(shù)據(jù)類型的數(shù)據(jù)在存儲(chǔ)空間中開辟空間時(shí),開辟的空間大小,以字節(jié)為單位。

  3,怎么用?

  sizeof(類型),或者sizeof(變量)都可以,得到的就是類型或者變量的存儲(chǔ)空間。當(dāng)對(duì)變量用的時(shí)候,也可以沒有括號(hào),直接 sizeof 變量,但一般不用(我一般都是只記一種通用的用法……)。

  4,用的時(shí)候要注意什么?

 ?。?)sizeof返回的占用空間大小是為這個(gè)變量開辟的大小,而不只是它用到的空間。和現(xiàn)今住房的建筑面積和實(shí)用面積的概念差不多。所以對(duì)結(jié)構(gòu)體用的時(shí)候,大多情況下就得考慮字節(jié)對(duì)齊的問題了。

 ?。?)對(duì)位域成員等連編譯器都無(wú)法確定存儲(chǔ)空間的東西不能用。這個(gè)應(yīng)該比較好理解,因?yàn)閟izeof返回的都是以字節(jié)為單位的數(shù)據(jù),你讓它去求那些以位為單位的大小,這不是存心難為編譯器嘛。所以編譯器采用的方案是統(tǒng)一不受理,即使你說你剛好是8位,占一個(gè)字節(jié),編譯器也不理你。

 ?。?)sizeof返回的數(shù)據(jù)類型是unsigned int。因?yàn)镃中不同類型數(shù)據(jù)混合運(yùn)算時(shí)的自動(dòng)轉(zhuǎn)換,有時(shí)候不注意的話可能會(huì)出問題,具體可以參照下面的程序例子。

  (4)要注意數(shù)組名和指針變量的區(qū)別。通常情況下,我們總覺得數(shù)組名和指針變量差不多,但是在用sizeof的時(shí)候差別很大,對(duì)數(shù)組名用sizeof返回的是整個(gè)數(shù)組的大小,而對(duì)指針變量進(jìn)行操作的時(shí)候返回的則是指針變量本身所占得空間,在32位機(jī)的條件下一般都是4。而且當(dāng)數(shù)組名作為函數(shù)參數(shù)時(shí),在函數(shù)內(nèi)部,形參也就是個(gè)指針,所以不再返回?cái)?shù)組的大小。

  5,實(shí)例分析

  源碼:

  1

  2

  3

  4

  5

  6

  7

  8

  9

  10

  11

  12

  13

  14

  15

  16

  17

  18

  19

  20

  21

  22

  23

  24

  25

  26

  27

  28

  #include<stdio.h>

  int main()

  {

  int iVal = 3;

  printf("The size of type int is %d \n", sizeof(int));

  printf("The size of iVal is %d\n", sizeof(iVal));

  printf("The size of iVal is %d\n", sizeof iVal);

  if((iVal - sizeof(int)) < 0)

  {

  printf("The return type is int\n");

  }

  else

  {

  printf("The return type is unsigned int\n");

  }

  char chArrayCon[7];

  char *chp;

  chp = chArrayCon;

  printf("The size of chArrayCon is %d, The size of chp is %d\n", sizeof(chArrayCon), sizeof(chp));

  int iArraySize = 3;

  char chArrayVar[iArraySize];

  printf("The size of chArrayVar is %d\n", sizeof(chArrayVar));

  return 0;

  }

  運(yùn)行結(jié)果:

  The size of type int is 4

  The size of iVal is 4

  The size of iVal is 4

  The return type is unsigned int

  The size of chArrayCon is 7, The size of chp is 4

  The size of chArrayVar is 3

  結(jié)果分析:

  代碼第一部分主要就是簡(jiǎn)單的表示了一下用法。

  第二部分說明了注意事項(xiàng)的第三項(xiàng)。按說,iVal的值是3,減4的話應(yīng)該是-1,小于0,輸出的應(yīng)該是"he return type is int"。但是由于當(dāng)int和unsigned int一起運(yùn)算時(shí),會(huì)默認(rèn)變成unsigned int,所以結(jié)果會(huì)是一個(gè)很大的unsigned int類型的數(shù),是大于0的。

  代碼第三部分就簡(jiǎn)單說明了數(shù)組名和指針變量的區(qū)別,即使你把指針變量指向數(shù)組名,編譯器依然能夠分辨出區(qū)別。

  以上講述的都沒有考慮在C99標(biāo)準(zhǔn)下的情況。因?yàn)樵贑99標(biāo)準(zhǔn)下有種特殊情況,那就是不定長(zhǎng)數(shù)組的使用。當(dāng)對(duì)不定長(zhǎng)數(shù)組名使用sizeof的話,返回的也是整個(gè)數(shù)組的大小,就像實(shí)例中第四塊代碼一樣。但是這并不是在編譯階段執(zhí)行的,而是在程序運(yùn)行階段執(zhí)行的。因?yàn)樵诰幾g的時(shí)候,編譯器一般不知道變量的值是多少。(當(dāng)然例子中我直接賦值3,可能不方便理解,可以假想iArraySize是通過scanf來(lái)獲得實(shí)際數(shù)值的,然后再聲明數(shù)組的)。對(duì)于這種情況,實(shí)際中應(yīng)用的并不多,大家可以當(dāng)做特殊情況對(duì)待即可,或者直接忽略掉也行……

  6總結(jié)

  其實(shí)sizeof的作用就是告訴我們分配給變量的“建筑面積”的大小,只要記得這一點(diǎn)應(yīng)該就夠了,不管這個(gè)變量類型是普通的整型數(shù)據(jù),還是結(jié)構(gòu)體,共用體,枚舉……記住這一點(diǎn)后,當(dāng)我們?cè)偃ハ胫纒izeof對(duì)不同數(shù)據(jù)類型操作返回的值到底是什么的時(shí)候,只需搞明白那些數(shù)據(jù)類型到底要消耗多少“建筑面積”就可以啦!

c語(yǔ)言中sizeof的用法

c語(yǔ)言中sizeof的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中sizeof的用法的用法,希望對(duì)你們有用。 c語(yǔ)言中sizeof的用法的用法如下: sizeof其實(shí)就是一個(gè)運(yùn)算符,和那些+,-一樣的東西,在程序編譯的時(shí)候進(jìn)行解析轉(zhuǎn)換。雖然
推薦度:
點(diǎn)擊下載文檔文檔為doc格式

精選文章

  • c語(yǔ)言中scanf的用法
    c語(yǔ)言中scanf的用法

    c語(yǔ)言中scanf的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中scanf的用法的用法,希望對(duì)你們有用。 c語(yǔ)言中scanf的用法的用法如下: Printf和S

  • c語(yǔ)言中return的用法
    c語(yǔ)言中return的用法

    c語(yǔ)言中 符號(hào)的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中 符號(hào)的用法,希望對(duì)你們有用。 c語(yǔ)言中 符號(hào)的用法如下: return是C++預(yù)定義的語(yǔ)句,

  • c語(yǔ)言中realloc函數(shù)的用法
    c語(yǔ)言中realloc函數(shù)的用法

    c語(yǔ)言中realloc函數(shù)的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中realloc函數(shù)的用法的用法,希望對(duì)你們有用。 c語(yǔ)言中realloc函數(shù)的用法的用法

  • c語(yǔ)言中rand的用法
    c語(yǔ)言中rand的用法

    c語(yǔ)言中rand的用法的用法你知道嗎?下面小編就跟你們?cè)敿?xì)介紹下c語(yǔ)言中rand的用法的用法,希望對(duì)你們有用。 c語(yǔ)言中rand的用法的用法如下: rand(產(chǎn)生隨

533351