strlen是函式,而sizeof是算符。strlen需要進行一次函式呼叫,而對於sizeof而言,因為緩衝區已經用已知字串進行了初始化,其長度是固定的,所以sizeof在編譯時計算緩衝區的長度。strlen是遇到0或者'\0'都會停止運算的,而sizeof是每個字元都會算的,不會漏掉0(或者'\0')
因為sizeof()測試的是陣列的長度。而strlen測試的是字串的長度。在定義陣列時,字串後面還有乙個結束標誌'\0',這個也要算進去!
**修改下:
宣告x的時候x裡面儲存的是"string\0",最後的\0是結束符,所以sizeof(x)就是7。
而\0的asccii碼值為0,strlen(x)是計算到\0位置,strlen(x)也就是0了。
注意:=0和='\0'都是結束。而='0'是真正的給對應位置置為字元0
C 錯誤知識點梳理之sizeof和strlen
sizeof 是以分類的陣列的實際所佔的記憶體空間大小計算長度 strlen計算字串的長度,是以 0 為字串結束標誌。const char str 123456 sizeof str 和strlen str 的結果分別是 第乙個sizeof讀取的是指標的長度,在64位系統為8b 在32位系統為4b ...
C語言的sizeof和strlen
strlen是函式,而sizeof是算符。strlen需要進行一次函式呼叫,而對於sizeof而言,因為緩衝區已經用已知字串進行了初始化,起長度是固定的,所以sizeof在編譯時計算緩衝區的長度。因為sizeof 測試的是陣列的長度。而strlen測試的是字串的長度。在定義陣列時,字串後面還有乙個結...
C語言 sizeof和strlen的計算
sizeof是乙個關鍵字,求字串所佔的位元組數。printf d n sizeof int printf d n sizeof a printf d n sizeof a strlen是乙個函式,求字串的長度,結束符 0之前的字元個數。看一下下面幾組練習 一維陣列 int a printf d n ...