strlen 和 sizeof 之区别

代码示例1:mesg[ ] = " "

#include <stdio.h>
#include <string.h>
int main()
{
char mesg[] = "";
printf("strlen of mesg:%d\n",(int)strlen(mesg));
printf("sizeof mesg:%d\n",(int)sizeof(mesg)/(int)sizeof(char));
return 0;
}

测试结果:

xuanmiao@linux:~/demo/test$ ./test
strlen of mesg:0
sizeof mesg:1
  • strlen 计算的是字符串的有效长度(不包括终止符 \0)。

  • sizeof 计算的是数组的总大小(包括所有字符和终止符 \0)。

  • mesg 的实际内容是 {'\0'},因此 strlen 返回 0sizeof 返回 1

 

代码示例2:mesg[ ] = "\0"

#include <stdio.h>
#include <string.h>
int main()
{
char mesg[] = "\0";
printf("strlen of mesg:%d\n",(int)strlen(mesg));
printf("sizeof mesg:%d\n",(int)sizeof(mesg)/(int)sizeof(char));
return 0;
}

 

测试结果

xuanmiao@linux:~/demo/test$ gcc test.c -o test
xuanmiao@linux:~/demo/test$ ./test
strlen of mesg:0
sizeof mesg:2
  • mesg 的实际内容是 {'\0', '\0'},因此 strlen 返回 0sizeof 返回 2

posted @   轩~邈  阅读(32)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
点击右上角即可分享
微信分享提示