相同點:
sizeof和strlen都可以計算字串的長度
不同點:
sizeof:是運算子
strlen:是函式
a.例如,定義如下:
char *info = 「hello,si mida!!\n」
問: 給info字串指標用malloc動態分配記憶體空間最好用sizeof還是strlen?
答案是最好用strlen。因為:malloc(strlen(info));用strlen 遇到\0然後停止,字串大小不計算\0在內;相反malloc(sizeof(info));用sizeof計算的是4,因為sizeof只關心型別的大小(型別的大小意思是info這個字元指標的型別,它的型別是char ×,所以用sizeof計算的是4),不是我們要的結果
b.在例如:
如果是:char info = 「hello,si mida!!\n」這種形式呢?
問:當成這個形式的時候,我們用sizeof和strlen哪個更好呢?
答:按道理來講,變為這中形式後,sizeof和strlen都可以用,但是用哪乙個更好?當然是sizeof。因為,strlen是函式,而sizeof是運算子,使用函式需要呼叫,肯定比sizeof耗時長,所以使用sizeof更好一些。
正確使用sizeof和strlen
sizeof 是用來計算乙個陣列占用多少空間,如果運算元是乙個指標,則反回的是乙個指標的大小。下面看一些例子 char ss 10 sizeof ss 10 表示在記憶體中的大小為 10 1 char ss 0123456789 sizeof ss 11 ss是陣列,計算到 0位置,因此是 10 1...
sizeof和strlen和 countof的區別
運算子,計算引數所佔記憶體 int nnum2 strlen arr 是函式,求字元的個數,不包括 0 int nnum3 countof arr windows巨集 計算陣列的元素個數 cout nnum1 cout nnum2 cout nnum3 endl int arr1 20 nnum1 ...
sizeof和strlen的區別
sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...