C語言 strlen與sizeof的區別

2021-09-29 04:34:25 字數 1103 閱讀 4319

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