sizeof()、size()、strlen()总结
2016-03-26 12:05
295 查看
1、sizeof 与strlen的区别
(1)sizeof是运算符,strlen是函数
(2)sizeof操作符的结果类型是size_t(unsigned int),在头文件中的定义为 typedef unsigned int size_t;
(3)sizeof可以用类型、函数做参数,strlen只能用char* 做参数,而且必须以’\0’结尾的。
(4)大部分编译程序在编译时就把sizeof计算过了,用来计算类型或变量内存的大小,strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度。
2、C与C++关于sizeof的一点儿区别:
C:
sizeof(char) = 1
sizeof(‘a’) = 4
C++:
sizeof(char) = 1
sizeof(‘a’) = 1
在C语言认为’a’是4字节,而C++语言认为’a’是1字节
原因如下:
C99标准的规定,’a’叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。
ISO C++标准规定,’a’叫做字符字面量(character literal),被看成是char型,所以占1字节。
3、字符串的size()函数返回字符串的长度,不包括结束符’\0’,也就是说:字符串的size()是表示字符串中真实有意义的字符的长度,结束符只是用于标记该字符串的结束,并无实际意义,所以不算在长度里面。
4、操作符sizeof(类型名 或 表达式)返回的是类型名所指定的类型或表达式的结果类型所占的字节数, 如:
sizeof(string)值为32;
string s;
sizeof(s)也是32;
详细见参考资料2;
5、sizeof()用于数组的时候,返回的是数组在内存中占用的字节数(如果是字符数组,则包括结束符);
用于其他变量或对象的时候,返回的是变量或对象所对应的数据类型在内存中占用字节长度;
size() 是 std::string 类的一个成员函数,功能是 返回string对象内维护的字符串长度;
成员函数size()返回的是元素个数,sizeof求的是占用内存的多少。
6、总结举例:
(1)sizeof(“abcd”)的值为5;
(2)string s = “abcd” ; sizeof(s)的值为28;//这个是为啥?
(3)length(“abcd”)的值为5;
(4)string s = “abcd” ; s.length()的值为4;//与(3)进行区分
(5)strlen(“abcd”)的值为4,不计算后面的’\0’;
(6)string s = “abcd” ; s.size()的值为4;//s.length()和s.size()功能一样
参考资料:
1、C/C++总结(sizeof、size_t)
2、字符串的size()和sizeof()
3、百度百科:sizeof
(1)sizeof是运算符,strlen是函数
(2)sizeof操作符的结果类型是size_t(unsigned int),在头文件中的定义为 typedef unsigned int size_t;
(3)sizeof可以用类型、函数做参数,strlen只能用char* 做参数,而且必须以’\0’结尾的。
(4)大部分编译程序在编译时就把sizeof计算过了,用来计算类型或变量内存的大小,strlen的结果要在运行的时候才能计算出来,用来计算字符串的长度。
2、C与C++关于sizeof的一点儿区别:
C:
sizeof(char) = 1
sizeof(‘a’) = 4
C++:
sizeof(char) = 1
sizeof(‘a’) = 1
在C语言认为’a’是4字节,而C++语言认为’a’是1字节
原因如下:
C99标准的规定,’a’叫做整型字符常量(integer character constant),被看成是int型,所以在32位机器上占4字节。
ISO C++标准规定,’a’叫做字符字面量(character literal),被看成是char型,所以占1字节。
3、字符串的size()函数返回字符串的长度,不包括结束符’\0’,也就是说:字符串的size()是表示字符串中真实有意义的字符的长度,结束符只是用于标记该字符串的结束,并无实际意义,所以不算在长度里面。
4、操作符sizeof(类型名 或 表达式)返回的是类型名所指定的类型或表达式的结果类型所占的字节数, 如:
sizeof(string)值为32;
string s;
sizeof(s)也是32;
详细见参考资料2;
5、sizeof()用于数组的时候,返回的是数组在内存中占用的字节数(如果是字符数组,则包括结束符);
用于其他变量或对象的时候,返回的是变量或对象所对应的数据类型在内存中占用字节长度;
size() 是 std::string 类的一个成员函数,功能是 返回string对象内维护的字符串长度;
成员函数size()返回的是元素个数,sizeof求的是占用内存的多少。
6、总结举例:
(1)sizeof(“abcd”)的值为5;
(2)string s = “abcd” ; sizeof(s)的值为28;//这个是为啥?
(3)length(“abcd”)的值为5;
(4)string s = “abcd” ; s.length()的值为4;//与(3)进行区分
(5)strlen(“abcd”)的值为4,不计算后面的’\0’;
(6)string s = “abcd” ; s.size()的值为4;//s.length()和s.size()功能一样
参考资料:
1、C/C++总结(sizeof、size_t)
2、字符串的size()和sizeof()
3、百度百科:sizeof
相关文章推荐
- 使用C++实现JNI接口需要注意的事项
- 关于指针的一些事情
- c++ primer 第五版 笔记前言
- share_ptr的几个注意点
- Lua中调用C++函数示例
- Lua教程(一):在C++中嵌入Lua脚本
- Lua教程(二):C++和Lua相互传递数据示例
- C++联合体转换成C#结构的实现方法
- C++高级程序员成长之路
- C++编写简单的打靶游戏
- C++ 自定义控件的移植问题
- C++变位词问题分析
- C/C++数据对齐详细解析
- C++基于栈实现铁轨问题
- C++中引用的使用总结
- 使用Lua来扩展C++程序的方法
- C++中调用Lua函数实例
- Lua和C++的通信流程代码实例
- C与C++之间相互调用实例方法讲解
- 解析C++中派生的概念以及派生类成员的访问属性