中易网

C中,字符串的长度和占用的存储字节有什么区别?

答案:4  悬赏:60  
解决时间 2021-01-17 17:18
C中,字符串的长度和占用的存储字节有什么区别?
最佳答案
长度是字符串的字符数,比如:

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返回的长度。
全部回答
我本来也想来回一帖,但是发现
上面几位的回答都很不错!赞一个!
长度就是字符串本身的长度,占用存储空间就是字符串申请的空间
比如
char s[4];
strcpy(s,"ab");
那么它的长度就是2字节,占用存储空间为4字节
字符串的长度算到字符串结束符 "\0"为止。
空(空白键)字符串:
" " -- (strlen送返)长度1,占2个存储字节(包括"\0")
如果用了n个空白键,则长度为n,存储字节为n+1, 因为最后有一个"\0"
我要举报
如以上问答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
倒流河我想知道这个在什么地方
林波名车行地址在什么地方,我要处理点事
点击海岛奇兵贝壳声音
1997年四川社保养老缴费基数
国产十万级轿车哪个好
把下列定语从句简化为短语 1.We lived in a a
尉犁县统计局地址在哪,我要去那里办事
多看阅读 畅读特权是如何得到的,还是如何购
尤溪县有几个镇
给大家简单的介绍一下喜鹊吧
哪里有免费工位?众创空间更好
怎样赞美不漂亮的女性
女人下辈子为什么都不会选择嫁给现在老公
韩愈认为教师的职责是什么
厌倦了城市的喧嚣,尔虞我诈,和各种不安全食
推荐资讯
谁有 倾尽泪水的诉说就是画皮2的插曲钢琴版的
Uac的角度怎么来的
火影当四代目变成了九尾狐小说txt全集免费下
北外环东路/净化路(路口)我想知道这个在什么
ubuntu16.04是什么桌面环境
宁明嘉和宾馆地址在什么地方,想过去办事
魔兽世界 木喉要塞声望有什么用?
《疯狂粤语》第53期14分钟左右时的BGM是什么
阜新至赤峰汽车怎么走,多少公里
在爱尔眼科工作怎么样?
叫出租从赤沙到广园汽车客运站要多长时间
紫米的云南香紫米
手机登qq时,显示手机磁盘不足,清理后重新登
刺客的套装怎么选啊?