我们从2011年坚守至今,只想做存粹的技术论坛。  由于网站在外面,点击附件后要很长世间才弹出下载,请耐心等待,勿重复点击不要用Edge和IE浏览器下载,否则提示不安全下载不了

 找回密码
 立即注册
搜索
查看: 1112|回复: 0

简单说说sizeof和strlen -嵌入式

[复制链接]

该用户从未签到

1万

主题

1292

回帖

936

积分

管理员

积分
936

社区居民最爱沙发原创达人社区明星终身成就奖优秀斑竹奖宣传大使奖特殊贡献奖

QQ
发表于 2013-7-30 19:09:52 | 显示全部楼层 |阅读模式
这两个函数在UNIX的编程中运用的太普遍了,不能不把它们深刻理解。先看一个例子: char *a = "012"; char b[] = "012345"; char c[10] = ""; struct my_struct{int a; char b;} ss[10];程序输出为:sizeof(a)=4, strlen(a)=3sizeof(b)=7, strlen(b)=6sizeof(c)=10, strlen(c)=0sizeof(ss)=80, sizeof(ss)/sizeof(ss[0])=10sizeof(int)=4, sizeof(char)=1总结: 1: sizeof(指针)结果是指针的大小,sizeof(数组名)结果是数组实际的长度; 2: strlen是针对字符串的函数,是根据字符串中的'\0'的位置来判断长度的;  3:结构体的sizeof操作返回的是结构体占用的字节数,包括了字节对齐的情况,一般来说,编译器会把结构体的长度定为结构体中长度最长的那个属性的长度的整数倍。 而结构数组的长度,正确的取得方式为sizeof(ss)/sizeof(ss[0])。</wbr
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

论坛开启做任务可以
额外奖励金币快速赚
积分升级了


Copyright ©2011-2024 NTpcb.com All Right Reserved.  Powered by Discuz! (NTpcb)

本站信息均由会员发表,不代表NTpcb立场,如侵犯了您的权利请发帖投诉

平平安安
TOP
快速回复 返回顶部 返回列表