C++系列——sizeof, strlen

来源:互联网 发布:评估数据库表的设计 编辑:程序博客网 时间:2024/04/29 18:47

一. sizeof的含义以及用法

作用:返回一个对象(普通对象或类型实例化)或类型名(结构体或类类型名)的长度(占用内存的大小)。返回值类型为size_t,单位为字节。

语法形式:

sizeof (type name);sizeof (expr);sizeof expr;

使用sizeof的结果会依赖于expr的类型:

  • 对普通对象,会返回其所占用的内存大小,比如32位机器上,char(1 byte),short(2 byte),int(4 byte),long(4 byte),long long(8 byte),float(4 byte),double(8 byte);对引用类型,同样也会返回其所占用的内存大小;
  • 对指针类型,会返回存放地址值所需的内存大小,比如32位机器上,地址长度为32位,即4 byte;注意,如果我们要取得指针指向对象占用内存大小,则要对该指针解引用(*);
  • 对数组类型,会返回单个数组元素占用内存大小乘上数组元素个数,即该数组所占用的内存大小;所以一般我们可以通过sizeof(array)/sizeof(*array)来求出数组元素的元素个数。

二. strlen的含义以及用法

作用:返回字符串的长度,计算方式为从字符串中的第一个字符开始,直到第一次遇到空字符(‘\0’)。

语法形式:std::size_t strlen( const char* str );


三. 二者的对比

对于字符串类型对象,返回值差别:

  • sizeof返回该字符串占用内存的全部长度,还包括了结尾符(空字符,'\0'),而strlen的计算则不包含空字符,故而一般sizeof返回的值比strlen返回的值大1。

0 0
原创粉丝点击