sizeof和strlen使用技巧

2021-07-24 08:06:40 字數 655 閱讀 4247

相同點:

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...