1樓:匿名使用者
字串的長度與字串在記憶體中所佔的空間是不一樣的。
c語言規定,字串在記憶體中儲存時,以'\0'作為結束標誌。字串的長度不包括'\0',所以字串a的長度是14。15是該字串在記憶體中所佔的位元組數,也就是說,必須是15個位元組才能儲存這個字串。
補充一點:你用sizeof()測試a,結果是15(sizeof測的是記憶體空間大小);用strlen()測試a結果是14(strlen測的是字串的長度).
2樓:
哦,字串長度應該是14,只是其所占用的記憶體空間為15.字串長度是指字串本身(包涵當中的空格或是其它符號)的長度,這是我的理解。我在網上找了下,這是別人的說法:
c字串長度定義規範**載自金慶的專欄)
因為總是見到c字串長度相關的錯誤, 所有定個規範出來, 有利於減少錯誤.
關鍵在於c字串有個結尾\0, 處理時需要注意.
定義字串長度有兩種方式, 一種是用字串的大小, 一種是字串的長度.
字串的大小即記憶體空間的大小, 而串長度加1才是所需空間.
3樓:匿名使用者
如果你用sizeof求長度,那麼得到值是15,如果你是strlen求長度,得到值是14,sizeof 計算的是占用記憶體的空間要計算'\0',strlen求的字串的長度,忽略不記'\0'
4樓:monkey家園
你用什麼函式或者功能檢測它的長度的?
我用的是dev c++中的c編譯器. sizeof 是15,而strlen是14
原因是sizeof 計算所有字元個數,而strlen已經假定'\0'是字串以外的結束符號.
#include
#include
main()
;printf("%d,%d",sizeof(a),strlen(a));
system("pause");}
5樓:匿名使用者
你這開始定義陣列時就有錯誤!定義時中一定要寫個數字,不然會出錯!你那問題是14個普通字元再加乙個轉意字元\0工15個位元組!陣列中不能放滿就以\0來填充,這點要記住!
6樓:西門小愛
你是用sizeof()求字串長度麼
sizeof與strlen 乙個指被占用位元組乙個指字串長度
在計算長度時候不需要計算結束符
C語言陣列基礎問題
1.請問arrout s,k 裡面的s是 值 還是 址?答 s是 位址,位址也是一種值。因此,c中有一種說法 c函式引數只傳值!2.s能換成其他的什麼形式?為什麼要轉?arrout 函式中,需要的是乙個整型變數的位址,你傳的s就是整型變數的位址,很正確的應用啊。3.k為什麼不是 k?答 當你不需要在...
求教基礎c語言,求教基礎C語言
前加 i i i 1 先自加在參與運算 如 i 1 c i 先 i i 2 再c i 最後c 2 後加 i i i 1 先參與運算 後自加如 i 1 c i 先將c i c 1 再i自加1 i 2 和 一樣 na1 10 nb1 na1 na1 na1 這個na1 先na1參與運算 nb1 na1 ...
C語言基礎程式設計問題 比較數字的大小
scanf d d d d d a 5 要改為scanf d d d d d a 0 a 1 a 2 a 3 a 4 如果要改為任意個數比較的話,需要動態分配陣列空間inti,max,n,a printf 輸入數字的數量 scanf d n a int malloc n sizoeof int fo...