问问题描述
答精选答案

长度是字符串的字符数,比如: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返回的长度。
本文来自作者[欧陆经典女鞋]投稿,不代表公众科技网立场,如若转载,请注明出处:https://www.cpst.net.cn/changshijingxuan/202609/456433.html
评论列表(4条)
我是公众科技网的签约作者“欧陆经典女鞋”!
希望本篇文章《C中,字符串的长度和占用的存储字节有什么区别》能对你有所帮助!
本站[公众科技网]内容主要涵盖:教育咨询,知识百科
本文概览:长度是字符串的字符数,比如:char* p = "1234";那么p的字符数就是4,4就是其长度,也可以理解为strlen和wcslen对字符串的返回值。占用存储字节是该字符串在内存中所占用的存储空间的表示,还是上面那个字符串,其占用存储空间就是5,包括一个空字节,所以其占用字节数为5。因此C风格ASCII字符串的长度和其字符数是不同的,除了C风格字符串(以空字节结尾的字符串),其他ASCII字符串也有长度和占用存储空间相同的情况,比如STL中的string其内存占用空间就和字符长度相同,因为它不是用空字