博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
sizeof 与 strlen 的区别
阅读量:5954 次
发布时间:2019-06-19

本文共 1162 字,大约阅读时间需要 3 分钟。

由于在项目中,经常需要判别变量、数组、字符串等字节长度,常常会用到sizeof 和 strlen, 有时候经常会弄混,故整理一下。

 

1. sizeof :

sizeof 运算符 返回一条表达式或一个类型名字所占的字节数。与众不同的一点是,sizeof 并不实际计算其运行对象的值。

Sales_data data , *p;sizeof(Sales_data);//存储Sales_data类型的对象所占的空间大小sizeof(data);//同上sizeof(p);//指针所占的空间大小,如果是64位系统,则为8sizeof(*p);//p所指类型的空间大小,等价于 sizeof(Sales_data);sizeof(data)sizeof(data.revenue);//Sales_data的revenue成员对应类型的大小

注意:由于 sizeof并不实际计算器运行对象的值,故对于sizeof(*p),即使p是一个无效的指针,也没关系,在sizeof的运算对象中解引用一个无效指针仍然是一种安全的行为。

 

·对char或者类型为char的表达式执行sizeof运算,结果为1·对引用类型执行sizeof运算得到被引用对象所占空间的大小·对指针执行sizeof运算得到指针本身所占空间的大小//64位:8;32位:4·对解引用指针执行sizeof运算得到指针指向的对象所占空间的大小,指针不需有效·对数组执行sizeof运算得到整个数组所占空间的大小。注意:sizeof运算不会把数组转换成指针来处理·对string对象或vector对象执行sizeof运算值返回该类型固定部分的大小,不会计算对象的元素占用了多少空间
char *abc = "123";char test[12]="123";char test1[]="123";cout<
<

 

2. strlen

这个函数是C语言下面的函数,所谓的C标准库String 函数。作用:返回字符串的长度,空字符不计算在内。

char ca[] = {
'C','+','+'};cout << strlen(ca) << endl; // 错误 ca虽然是一个字符数组,但它不是以空字符作为结束的,有可能沿着ca在内存中的位置不断向前寻找,直到遇到空字符才停下来。

传入strlen函数的指针必须指向以空字符作为结束的数组;同类的函数有 strcmp, strcat, strcpy

char ca[] = {
0x11,0x22,0x00,0x23};cout<
<

 

转载于:https://www.cnblogs.com/ycbeginner/p/9961519.html

你可能感兴趣的文章
Python yield 使用浅析
查看>>
Android UI-实现底部切换标签(fragment)
查看>>
string类常用单字符处理函数
查看>>
MYSQL 时间函数总结
查看>>
大话数据结构读书笔记系列(七)图
查看>>
java队列,ArrayBlockingQueue
查看>>
Linux 下java jdk安装
查看>>
ITV/IPTV常见错误代码及解决办法
查看>>
android studio打包aar心得
查看>>
嵌入式环境搭建之NFS
查看>>
对信号函数sigaction的sa_mask的学习
查看>>
Linux中路径的组成部分
查看>>
路径找不到时该怎么解决
查看>>
6 Linux之bash环境配置
查看>>
一个很好的图片等比压缩类
查看>>
Linux 用户和组 (1)基本概念
查看>>
如何提高网络安全指数
查看>>
使用 ‘In Place’ 直接从MySQL 5.0升级至5.7
查看>>
MatLab的排序函数-sort
查看>>
FIFO算法与LRU算法
查看>>