sizeof与strlen
来源:互联网 发布:php 异步执行 队列 编辑:程序博客网 时间:2024/05/14 11:21
1.sizeof
sizeof运算符返回一条表达式或者一个类型名字所占的字节数,注意sizeof不是一个函数,运算对象有两种形式。
sizeof (type)和sizeof expr,第二种返回的是表达式结果类型的大小
sizeof不会实际求运算对象的值,无须为其提供具体对象。
对于以下类型:
引用---得到被引用对象的空间
指针---指针本很空间
解引用指针---所指向空间大小
数组---等价于数组中各执行一次并求和,不会转化为指针来处理
string对象、vector对象---返回该类型固定大小部分
2.strlen
strlen是函数,参数只能是可被转化为const char*的类型,strlen计算是从开始到遇见'\0'的长度,不包含'\0'
3.综合上述两点得出sizeof关注的理是论上给该类型多少,strlen关注的是实际有的是多少
4.对于数组长度
char test1[4]={'1','2'}; cout<<sizeof(test1)<<endl; //输出4 cout<<strlen(test1)<<endl; //输出2
5.对于两个string对象(sizeof)
string str1="1234"; string str2="12345678"; cout<<sizeof(str1)<<endl; //输出4 cout<<sizeof(str2)<<endl; //输出4
6.对于sizeof与strlen的差异
int a, b, c, d; a = sizeof("123456789"); //10 b = sizeof("123456789"+1); //4 c = strlen("123456789"); //9 d = strlen("123456789"+1); //8 cout<<a<<" "<<b<<" "<<c<<" "<<d<<endl;
7.差异原因
char test1[10]; const char* test2="23456789"; //"123456789" ---转换为字符数组 长度10 最后一个 \0 cout<<typeid("123456789").name()<<endl; cout<<typeid(test1).name()<<endl; cout<<typeid(test2).name()<<endl; //输出 23456789 strlen 算出8 cout<<("123456789"+1)<<endl; //"123456789"+1 的类型为 char const * 长为 4 cout<<typeid("123456789"+1).name()<<endl; cout<<typeid(test2).name()<<endl; //输出4 cout<<sizeof(char const *)<<endl;
对于sizeof来说,"123456789"和"123456789"+1体现出很大的差别,对于前者,sizeof将其当成字符数组,计算得出结果10(最后一个'\0'),对于后者则是进行了指针运算,计算的是指针的长度,所以"123456789"+1的类型为const char*,长为4,而“123456789”是char [10]类型,长为10
对于strlen来说"123456789"和"123456789"+1只是算起始点和最后的'\0‘之间的长度,前者为9(不含'\0'),后者为8(指针后移一位)
0 0
- sizeof()与strlen()用法
- sizeof()与strlen()
- 关于sizeof与strlen
- 关于sizeof()与strlen()
- strlen与sizeof区别
- sizeof与strlen区别
- Sizeof与Strlen
- strlen与sizeof区别
- sizeof与strlen()
- sizeof与strlen
- strlen() 与 sizeof() 区别
- sizeof与strlen
- sizeof 与 strlen
- strlen与sizeof
- strlen与sizeof
- sizeof与strlen
- sizeof()与strlen()[转]
- sizeof与strlen
- 开发者必备的十二大Android开发资源
- 算法与数据结构(二)--堆排序算法(最大堆)
- Ubuntu将用户加入sudo list 且不需要密码
- 页面很长,导航到顶部
- 快排
- sizeof与strlen
- 在omnet++上仿真无线传感网络2
- SQL中给定某一日期段生成所有日期数据
- 第八周项目四个人所得税计算器
- 思考项目 求s=1!+2!+···+10!(同种循环嵌套)
- 第八周项目四之个人所得税计算机
- 排序算法整理
- Unix域套接字
- SVM资料