string字符串的長度 C中,字符串的長度和占用的存儲字節(jié)有什么區(qū)別?
C中,字符串的長度和占用的存儲字節(jié)有什么區(qū)別?長度是字符串中的字符數。例如,char*P=“1234”,那么P中的字符數是4,4是其長度。它也可以理解為strlen和wcslen對字符串的返回值。占用
C中,字符串的長度和占用的存儲字節(jié)有什么區(qū)別?
長度是字符串中的字符數。例如,char*P=“1234”,那么P中的字符數是4,4是其長度。它也可以理解為strlen和wcslen對字符串的返回值。占用的存儲字節(jié)表示內存中的字符串或上面的字符串占用的存儲空間。占用的存儲空間是5,包括一個空字節(jié),因此占用的字節(jié)數是5。因此,C樣式ASCII字符串的長度和字符數是不同的。除了C樣式的字符串(以空字節(jié)結尾的字符串),其他ASCII字符串具有相同的長度和存儲空間。例如,STL中字符串的內存空間與字符的長度相同,因為它不使用空字符來標識字符串的結尾。因此對于ASCII字符串,長度和字節(jié)數可能是相同的。對于寬字符wcharut或Unicode,字符的長度必須與字節(jié)數不同。wcharut s[]=l“1234”sizeof(s)為10,wcslen(s)為4。很簡單,這兩個概念也可以理解為sizeof和strlen或wcslen返回的長度。
一個字符串類型的值能儲存最大容量是多少???
呃,你可以看到源代碼,還有很多案例。字符串數組的最大長度當然是Integer.MAX但是,Java在常量池中有一個變量utf8表。該表的最大字段為65535,null占用兩個字節(jié)。因此,當字符串填充字母時,源代碼中有一個判斷(<65535),即可以放入65534個字母,但如果是漢字,則判斷條件是(<65535),即可以放入65535個漢字。當然,以上情況都是在編譯時發(fā)生的。如果是在運行時,則最大長度為Integer.MAX價值接近4G,基本上是不可能的。最長的字符串場景應該是序列化類,它可以持續(xù)數千年。