歡迎來(lái)到培訓(xùn)無(wú)憂網(wǎng)!

全國(guó)切換

咨詢(xún)熱線 400-001-5729

位置:培訓(xùn)無(wú)憂網(wǎng) > 新聞資訊 > 電腦/IT > c語(yǔ)言 >  C語(yǔ)言基礎(chǔ)學(xué)習(xí)之sizeof與strlen區(qū)別有哪些

C語(yǔ)言基礎(chǔ)學(xué)習(xí)之sizeof與strlen區(qū)別有哪些

來(lái)源:達(dá)內(nèi)教育 發(fā)布人:星星

2022-01-08 14:56:07|已瀏覽:2858次

strlen和sizeof的區(qū)別是什么

       在 C/C++ 中,sizeof() 是一個(gè)判斷數(shù)據(jù)類(lèi)型或者表達(dá)式長(zhǎng)度的運(yùn)算符。今天我們主要來(lái)講一講C/C++基礎(chǔ)sizeof與strlen 區(qū)別,下面先看看sizeof的定義:

1、sizeof 定義
       sizeof 是 C/C++ 中的一個(gè)操作符(operator),返回一個(gè)對(duì)象或者類(lèi)型所占的內(nèi)存字節(jié)數(shù)。
       The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type(including aggregate types). This keyword returns a value of type size_t. ——來(lái)自MSDN

       其返回值類(lèi)型為 size_t ,在頭文件 stddef.h 中定義為: typedef unsigned int size_t;從sizeof 的定義可以看出:sizeof 不是一個(gè)函數(shù),因?yàn)楹瘮?shù)調(diào)用必須有一對(duì)括號(hào)。

int num = 97;

printf("sizeof(num = 0)的值:%d\n",sizeof(num = 0));
printf("num 的值:%d\n",num);
      運(yùn)行結(jié)果為4,97;并不是4,0
      說(shuō)明:sizeof 不是標(biāo)準(zhǔn)意義上的一元操作符,不支持鏈?zhǔn)奖磉_(dá)式,sizeof 作用域范圍內(nèi)的語(yǔ)句不會(huì)編譯成機(jī)器碼,如 sizeof(num++) 中的 ++ 不執(zhí)行。sizeof 也不是函數(shù), sizeof 更像一個(gè)特殊的宏,在編譯階段求值。
      下面說(shuō)一說(shuō)sizeof與strlen 區(qū)別:
      sizeof 是一個(gè)操作符,strlen 是庫(kù)函數(shù)。sizeof 的參數(shù)可以是數(shù)據(jù)的類(lèi)型,也可以是變量,而 strlen 只能以結(jié)尾。
編譯器在編譯時(shí)就計(jì)算出了 sizeof 的結(jié)果,而 strlen 函數(shù)必須在運(yùn)行時(shí)才能計(jì)算出來(lái)。并且 sizeof 計(jì)算的是數(shù)據(jù)類(lèi)型占內(nèi)存的大小,而 strlen 計(jì)算的是字符串實(shí)際的長(zhǎng)度。數(shù)組做 sizeof 的參數(shù)不退化,傳遞給 strlen 就退化為指針了。如:
      int ss[20]="0123456789";sizeof(ss)=80, //ss表示在內(nèi)存中的大小,20*4。strlen(ss) //錯(cuò)誤,strlen的參數(shù)只能是char*,且必須是以“\0”結(jié)尾的。

      char *ss="0123456789";sizeof(ss)=4, //ss是指向字符串常量的字符指針。sizeof(*ss)=1, // *ss是第一個(gè)字符。

      本文由培訓(xùn)無(wú)憂網(wǎng)達(dá)內(nèi)教育專(zhuān)屬課程顧問(wèn)老師整理發(fā)布,更多C語(yǔ)言課程信息可關(guān)注培訓(xùn)無(wú)憂網(wǎng)C語(yǔ)言培訓(xùn)頻道或添加老師微信:15033336050

      注:尊重原創(chuàng)文章,轉(zhuǎn)載請(qǐng)注明出處和鏈接 http://m.universityresearchassociates.com/news-id-13829.html 違者必究!部分文章來(lái)源于網(wǎng)絡(luò)由培訓(xùn)無(wú)憂網(wǎng)編輯部人員整理發(fā)布,內(nèi)容真實(shí)性請(qǐng)自行核實(shí)或聯(lián)系我們,了解更多相關(guān)資訊請(qǐng)關(guān)注c語(yǔ)言頻道查看更多,了解相關(guān)專(zhuān)業(yè)課程信息您可在線咨詢(xún)也可免費(fèi)申請(qǐng)?jiān)囌n。關(guān)注官方微信了解更多:150 3333 6050

留下你的信息,課程顧問(wèn)老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專(zhuān)業(yè)課程!
  • 姓名:

  • 手機(jī):

  • 地區(qū):

  • 想學(xué)什么:

  • 培訓(xùn)無(wú)憂網(wǎng)
免 費(fèi) 申 請(qǐng) 試 聽(tīng)
提交申請(qǐng),《培訓(xùn)無(wú)憂網(wǎng)》課程顧問(wèn)老師會(huì)一對(duì)一幫助你規(guī)劃更適合你的專(zhuān)業(yè)課程!