一、strlen
1.1 函式原型
strlen 是乙個函式,它用來計算指定字串 str 的長度,但不包括結束字元(即 null 字元)。其原型如下所示:
size_t strlen
(char
const
* str)
;
1.2 示列char sarr=
"ilovec"
;/*用strlen()求長度, 執行結果為 6(因為不包括結束字元 null)*/
printf
("sarr的長度=%d\n"
,strlen
(sarr)
);
1.3 兩個strlen(sarr) 的結果做減法總為整數/*判斷一*/if(
strlen
(x)>=
strlen
(y))
/*判斷二*/if(
strlen
(x)-
strlen
(y)>=0)
其中,判斷表示式一沒什麼問題,程式也能夠完全按照預想的那樣工作;但判斷表示式二的結果就不一樣了,它將永遠是真;原因很簡單,因為函式 strlen 的返回結果是 size_t 型別(即無符號整型),而 size_t 型別絕不可能是負的。因此,語句「if(strlen(x)-strlen(y)>=0)」將永遠為真。
二、sizeof
關鍵字 sizeof 是乙個單目運算子,而不是乙個函式。與函式 strlen 不同,它的引數可以是陣列、指標、型別、物件、函式等,如下面的示例**所示:
char sarr=
"ilovec"
;/*用sizeof求長度, 執行結果為 7(因為它包括結束字元 null)*/
printf
("sarr的長度=%d\n"
,sizeof
(sarr)
);
C語言sizeof 與 strlen的比較
今天看了個演算法的題目,說是要合併兩個有序陣列,按照有序的方式。看看以為很簡單的,想當然的就開始敲程式了,但是發現了很多小問題,這些都是基礎啊,突出的是sizeof 的問題。sizeof 獲取的是乙個型別的佔據位元組長度,strlen 獲取字串的長度 兩次失足後,我不在做這些無聊的嘗試了,仔細找找問...
C語言 sizeof與strlen的區別
一 sizeof sizeof 是運算子,在標頭檔案中typedef為unsigned int,其值在編譯時即計算好了,引數可以是陣列 指標 型別 物件 函式等。它的功能是 獲得保證能容納實現所建立的最大物件的位元組大小。由於在編譯時計算,因此sizeof不能用來返回動態分配的記憶體空間的大小。實際...
C語言中sizeof與strlen區別
sizeof 初始的分配的空間大小,期中 sizeof unsigned char 1 sizeof signed char 1 sizeof int 4 sizeof unsigned int 4 sizeof short int 2 sizeof unsigned short 2 sizeof ...