sizeof()和strlen()不得不说的故事
2015-09-19 22:06
387 查看
sizeof()
sizeof()是判断一个对象或者一个类型所占内存字节数的操作符。//32bit int a; int b[]={1,2} sizeof(a)//4byte sizeof(b)//数组对象,计算数组元素所占的总长度 4byte*2= 8byte char *p0; sizeof(p0)//4 byte char *p1="Tencent"; sizeof(p1);//4 byte p1是指针,指针占4字节 char p2[]="Tencent"; sizeof(p2);//8byte p2是数组对象,计算数组所有元素占内存的总长度,字符串的\0也算在内
char data[0] 求sizeof()
struct data { char *p; char a[0]; };
在结构体会忽略char a[0]的大小,因为根本没有分配内存。
sizeof(data) = 4;
如果不在结构体当中, char a[0]会报错。
strlen()
函数原型:size_t strlen(const char *string);功能:它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值(长度不包含“\0”)。
char *p1 = "Tencent"; strlen(p1);//7 byte,不包含\0 char p2[]="Tencent"; strlen(p2);//7 byte
比较
sizeof()计算传入对象所占内存的大小,而strlen()是从传入对象处开始扫描直至第一个等于’\0’处的计数截止。对于字符串类型来说:
1.传入数组类型,sizeof会计算数组所有元素所占内存的大小,
‘\0’也计入在内。而传入指针(指向字符串)时,计算的是指针本身所在内存的大小。
2.对于strlen(),不管传入数组类型还是指针,只有内容相同,strlen()的结果都一样。
相关文章推荐
- C#中sizeof的用法实例分析
- 浅析C语言中的sizeof
- 深入sizeof的使用详解
- C语言中的sizeof操作符用法及和strlen的区别
- C++不使用变量求字符串长度strlen函数的实现方法
- sizeof()的简单介绍
- 基于Sizeof与Strlen的区别以及联系的使用详解
- 浅析C/C++中被人误解的SIZEOF
- PHP字符串长度计算 - strlen()函数使用介绍
- php strlen mb_strlen计算中英文混排字符串长度
- 解决不用sizeof求出int大小的方法
- 字符串长度函数strlen和mb_strlen的区别示例介绍
- C++ sizeof 实例解析
- C语言中关于sizeof 和 strlen的区别分析
- 对C语言中sizeof细节的三点分析介绍
- 浅析PHP中strlen和mb_strlen的区别
- PHP中strlen()和mb_strlen()的区别浅析
- c++ sizeof 和strlen
- C语言之字符串长度和字符串反转
- 2.1-squid正向代理