C語言基礎(chǔ)學習之sizeof與strlen區(qū)別有哪些
2022-01-08點擊量:2856
在C/C++中,sizeof()是一個判斷數(shù)據(jù)類型或者表達式長度的運算符。今天我們主要來講一講C/C++基礎(chǔ)sizeof與strlen區(qū)別,下面先看看sizeof的定義:1、sizeof定義sizeof是C/C++中的一個操作符(operator),返回一個對象或者類型所占的內(nèi)存字節(jié)數(shù)。Thesizeofkeywordgivestheamountofstorage,inbytes,associatedwithavariableoratype(includingaggregatetypes).Thiskeywordreturnsavalueoftypesize_t.——來自MSDN其返回值類型為size_t,在頭文件stddef.h中定義為:typedefunsignedintsize_t;從sizeof的定義可以看出:sizeof不是一個函數(shù),因為函數(shù)調(diào)用必須有一對括號。intnum=97;printf("sizeof(num=0)的值:%d\n",sizeof(num=0));printf("num的值:%d\n",num);運行結(jié)果為4,97;并不是4,0說明:sizeof不是標準意義上的一元操作符,不支持鏈式表達式,sizeof作用域范圍內(nèi)的語句不會編譯成機器碼,如sizeof(num++)中的++不執(zhí)行。sizeof也不是函數(shù),sizeof更像一個特殊的宏,在編譯階段求值。下面說一說sizeof與strlen區(qū)別:sizeof是一個操作符,strlen是庫函數(shù)。sizeof的參數(shù)可以是數(shù)據(jù)的類型,也可以是變量,而strlen只能以結(jié)尾。編譯器在編譯時就計算出了sizeof的結(jié)果,而strlen函數(shù)必須在運行時才能計算出來。并且sizeof計算的是數(shù)據(jù)類型占內(nèi)存的大小,而strlen計算的是字符串實際的長度。數(shù)組做sizeof的參數(shù)不退化,傳遞給strlen就退化為指針了。如:intss[20]="0123456789";sizeof(ss)=80,//ss表示在內(nèi)存中的大小,20*4。strlen(ss)//錯誤,strlen的參數(shù)只能是char*,且必須是以“\0”結(jié)尾的。char*ss="0123456789";sizeof(ss)=4,//ss是指向字符串常量的字符指針。sizeof(*ss)=1,//*ss是第一個字符。本文由培訓無憂網(wǎng)達內(nèi)教育專屬課程顧問老師整理發(fā)布,更多C語言課程信息可關(guān)注培訓無憂網(wǎng)C語言培訓頻道或添加老師微信:15033336050...