歡迎來到培訓無憂網!

全國切換

咨詢熱線 400-001-5729

位置:培訓無憂網 > 新聞資訊 > 電腦/IT > c語言 >  C語言基礎學習之sizeof與strlen區(qū)別有哪些

C語言基礎學習之sizeof與strlen區(qū)別有哪些

來源:達內教育 發(fā)布人:星星

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

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

       在 C/C++ 中,sizeof() 是一個判斷數據類型或者表達式長度的運算符。今天我們主要來講一講C/C++基礎sizeof與strlen 區(qū)別,下面先看看sizeof的定義:

1、sizeof 定義
       sizeof 是 C/C++ 中的一個操作符(operator),返回一個對象或者類型所占的內存字節(jié)數。
       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. ——來自MSDN

       其返回值類型為 size_t ,在頭文件 stddef.h 中定義為: typedef unsigned int size_t;從sizeof 的定義可以看出:sizeof 不是一個函數,因為函數調用必須有一對括號。

int num = 97;

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

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

      本文由培訓無憂網達內教育專屬課程顧問老師整理發(fā)布,更多C語言課程信息可關注培訓無憂網C語言培訓頻道或添加老師微信:15033336050

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

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

  • 手機:

  • 地區(qū):

  • 想學什么:

  • 培訓無憂網
免 費 申 請 試 聽
提交申請,《培訓無憂網》課程顧問老師會一對一幫助你規(guī)劃更適合你的專業(yè)課程!