C语言字符串函数

sizeof()与strlen()有什么实质性的区别吗?... sizeof()与strlen()有什么实质性的区别吗? 展开
 我来答
White_MouseYBZ
2013-10-11 · TA获得超过4万个赞
知道大有可为答主
回答量:2.1万
采纳率:82%
帮助的人:6706万
展开全部
首先要明白,sizeof不是函数,而是操作符;strlen是函数。
操作符sizeof用来判断对象、类型所占用的内存空间的字节数,strlen是计算一个字符串以字节计的长度。如:sizeof(int)、sizeof(double)、sizeof(char)等是合法的,可以计算出int、double、char这些类型所占用的字节数分别是4、8、1,而用strlen则是非法的。再如:若有char a[20]="123";,那么,strlen(a)的结果是3,而sizeof(a)的结果是20;前者是字符串“123”的长度,后者是为数组a分配的内存空间。还有:当计算一个指向字符串的指针时,sizeof得到的是指针本身的长度即固定为4(32位机),而strlen得到的是指针指向的字符串的长度。如:char a[20]="1234567",*p=a;,则,sizeof(p)=4,而strlen(p)=7。似乎复杂了点。记住一个原则就好判断:操作符sizeof用来计算系统为对象本身分配的空间(以字节计),函数strlen用来计算字符串的长度(以字节计)。
cpucash
2013-10-11 · TA获得超过1584个赞
知道小有建树答主
回答量:1457
采纳率:66%
帮助的人:973万
展开全部
当然有
如果是指针的话,sizeof是4,也就是指针的长度,strlen检测这个地址到后面的结束符直接的长度
如果是数组,那么sizeof是这个数组的长度,strlen还是检测这个数组首地址到结束符之间的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
870177103
2013-10-11 · TA获得超过522个赞
知道小有建树答主
回答量:486
采纳率:0%
帮助的人:349万
展开全部
1,sizeof是编译时计算,strlen是运行时计算
2,sizeof只能对确定大小的任意内容缓冲区的大小进行计算,strlen只能对以\0结尾的字节串计算长度,返回到\0为止的字节串的长度(不包括\0)
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式