关于sizeof的浅显理解

baidu_36660669 2016-11-09 03:59:43
总是对于sizeof和strlen有一种说不完的感觉,今天突然又看到了,就把他们在见识见识。

这是我写的一个程序
#include<stdio.h>
#include<string.h>

int main(void)
{

char a[]="abcd";
char b[]="\0abcd";


printf("%d\n",sizeof(a));//5
printf("%d\n",sizeof(b));//6
printf("%d\n",strlen(a));//4
printf("%d\n",strlen(b));//0
return 0;
}

结果是:5 6 4 0

我们可以看到什么呢,我们大家以前都知道sizeof是要包含最后一个\0(隐式存在)
,strlen是不需要的,但是strlen遇到\0是要退出的, 就是各有利弊,需要我们以后多多注意,想分享的完了。。。。。




...全文
340 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
「已注销」 2016-11-25
  • 打赏
  • 举报
回复
sizeof 和 strlen 的关系,就像数值 2 和 "int a" 的 a 一样。
sdghchj 2016-11-10
  • 打赏
  • 举报
回复
的确理解够浅显
flying_music 2016-11-09
  • 打赏
  • 举报
回复
分析的不错啊,不过sizeof的水还是比较深的,慢慢体会吧
yeeeex 2016-11-09
  • 打赏
  • 举报
回复
谢谢楼主分享
ForestDB 2016-11-09
  • 打赏
  • 举报
回复
总是把不相关的知识点放在一起讨论。
www_adintr_com 2016-11-09
  • 打赏
  • 举报
回复
sizeof 是一个编译期间的运算符, 编译完成后就是一个常数 strlen 是运行的时候要去扫描内存, 是动态计算结果的.
桓灭 2016-11-09
  • 打赏
  • 举报
回复
sizeof和\0没什么关系
赵4老师 2016-11-09
  • 打赏
  • 举报
回复
建议楼主闲来无事去看看gcc/g++源代码中sizeof的实现。
fefe82 2016-11-09
  • 打赏
  • 举报
回复
sizeof 给出的类型的大小。如果给它一个对象,那么给出的这个对象的类型的大小。 当对象是一个子对象的时候,sizeof 给出的大小可以跟对象的实际大小不一致。

69,373

社区成员

发帖
与我相关
我的任务
社区描述
C语言相关问题讨论
社区管理员
  • C语言
  • 花神庙码农
  • 架构师李肯
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧