C中,字串的長度和佔用的儲存位元組有什麼區別

時間 2021-08-11 17:32:36

1樓:匿名使用者

長度是字串的字元數,比如:

char* p = "1234";

那麼p的字元數就是4,4就是其長度,也可以理解為strlen和wcslen對字串的返回值。

佔用儲存位元組是該字串在記憶體中所佔用的儲存空間的表示,還是上面那個字串,其佔用儲存空間就是5,包括一個空位元組,所以其佔用位元組數為5。因此c風格ascii字串的長度和其字元數是不同的,除了c風格字串(以空位元組結尾的字串),其他ascii字串也有長度和佔用儲存空間相同的情況,比如stl中的string其記憶體佔用空間就和字元長度相同,因為它不是用空字元來標識字串結尾的。

所以對於ascii字串,其長度和所佔位元組數可能相同。

而對於寬字元wchar_t或unicode,其字元長度肯定和所佔位元組數不同。

wchar_t s = l"1234";

sizeof(s)是10,wcslen(s)是4。

知道了吧,簡單點這2個概念也可以理解為sizeof和strlen或wcslen返回的長度。

2樓:智趣派

長度就是字串本身的長度,佔用儲存空間就是字串申請的空間比如char s[4];

strcpy(s,"ab");

那麼它的長度就是2位元組,佔用儲存空間為4位元組

3樓:

字串的長度算到字串結束符 "\0"為止。

空(空白鍵)字串:

" " -- (strlen送返)長度1,佔2個儲存位元組(包括"\0")

如果用了n個空白鍵,則長度為n,儲存位元組為n+1, 因為最後有一個"\0"

4樓:匿名使用者

我本來也想來回一帖,但是發現

上面幾位的回答都很不錯!贊一個!

能夠儲存每個字串的長度至多為的?字串

一嘆 一個二維陣列a 10 20 能夠儲存的每個字串的長度為19個字元,能夠儲存10個這樣的字串。分析 因為二維陣列以為的長度為10,所以說二維陣列a具有10個長度為20的一維陣列,所以說能夠儲存10個字串。因為第二維的長度為20,所以說能夠儲存的最大的長度為19個字元,因為以陣列的形式儲存字串需要...

c語言刪除字串中的字元,C語言 刪除字串中指定的字元

受災 這個容易,就是把指定位置的字元去掉,也就是說後面的字元覆蓋比如刪除指定的字元在字串中第一個出現的位置void strdel char str,char ch if p 希望能解決您的問題。 微俊 include include int main s i 0 printf input a cha...

C字串和變數的理解

一。最後一行第2個 branchname 和最後一行第2個 strtype 是變數對麼?答 是的 二。字串是什麼?答 在c 中,通俗一些,用雙引號 括起來的一組字元就叫著字串。三。最後一行的4個 我一個都不理解 答 在c 中就是把 前後的字串合起來變成一個字串。4個 就是把五個字串都連起來變成一個字...