strlen和sizeof的愛恨情仇

2021-07-16 10:33:26 字數 894 閱讀 5766

在平時寫**的時候,我們經常會用sizeofstrlen來求取陣列和字串的長度,這兩個在功能上比較相似,但在原理上是不一樣的。

strlen :

sizeof :

陣列做 sizeof 的引數不退化,但傳遞給strlen就退化為指標了。陣列作為引數傳給函式時傳的是指標而不是陣列,傳遞的是陣列的首位址。

下面舉個例子:

char *pccolor="cs0ftx3000";

char accolor="cs0ftx3000";

strlen(pccolor)=_____;

strlen(accolor)=_____;

sizeof(pccolor)=_____;

sizeof(accolor)=_____;

由上面的定義可以知道,求strlen(pccolor)求的是pccolor裡字串的長度是10個,所以strlen(pccolor)=10;求strlen(accolor)的時候,同樣也是求陣列中的字元長度,所以strlen(accolor)=10;sizeof(pccolor),引數是指標,儲存該指標的位址的長度,所以sizeof(pccolor)=4;第4個,accolor是乙個陣列,其中儲存的是字串」cs0ftx3000」,但是要注意的是,用sizeof存的時候,字串中還包括了『\0』,所以sizeof(accolor)=11

在學習的過程中,一定要仔細區別有相似作用的函式或者操作符,那些小小的不同點更需要我們去重視、去正確應用。

sizeof和strlen的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

strlen和sizeof的區別

sizeof與strlen的區別與聯絡 轉 1.sizeof操作符的結果型別是size t,它在標頭檔案中typedef為unsigned int型別。該型別保證能容納實現所建立的最大物件的位元組大小。2.sizeof是算符,strlen是函式。3.sizeof可以用型別做引數,strlen只能用c...

sizeof和strlen的區別

sizeof和strlen都可以用來求變數的長度,但兩者之間還是有很大的區別的。首先,從2個例子講起 例1 charss 100 0123456789 sizeof ss 結果為100 ss表示在記憶體中預分配的大小,100 1 strlent ss 結果為10 它的內部實現是用乙個迴圈計算字串的長...