length()、size()、sizeof()三者的区别

一、length()函数

c++中,length()只是用来获取字符串的长度。
例如:string str = “asdfghjkl”
则,str.length() = 9。

二、size()函数

c++中,在获取字符串长度时,size()函数与length()函数作用相同。
除此之外,size()函数还可以获取vector类型的长度。
例如:vector < int> num(15,2)
则,num.size() = 15。

三、sizeof()运算符

sizeof()运算符用来求对象所占内存空间的大小。

3.1 获取基本类型的大小
在windows64系统环境下,各种基本类型的大小如下:
sizeof(char)=1 , sizeof(int)=4 , sizeof(long)=8 , sizeof(float)=4 , sizeof(double)=8 , sizeof(string)=28。

除此之外,64位编译器下指针型的长度为8(32位为4),即:
sizeof(int*) = sizeof(float*) = sizeof(char*) = 8。

常量值及变量值的长度,等同于它的实际类型长度的:
sizeof(2)=4 , sizeof(3.14)=8。
(不定义类型的情况下,计算机默认3.14为double类型)

3.2 求取数组所占内存空间大小
Example:

char c[] = "asdsds";
char* cc = c;
char cn[40] = "asdsds";
int a[] = {1,2,3,4,5,6};
int* aa = a;
cout << sizeof(c) << sizeof(cc) << sizeof(*cc) << sizeof(cn);
cout << sizeof(a) << sizeof(aa) << sizeof(*aa);

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

Output:

sizeof(c) = 7          //c是数组,计算到'\0'位置,结果为6*1+1=7
sizeof(cc) = 8         //cc为指针类型,大小为8
sizeof(*cc) = 1        //*cc指向c的第一个字符,大小为1
sizeof(cn) = 40        //开辟40个char空间,大小为40*1=40
sizeof(a) = 24         //a是数组,但不需计算到'\0',结果为6*4=24
sizeof(aa) = 8         //aa为指针类型,大小为8
sizeof(*aa) = 4        //*aa指向a的第一个数字,大小为4

   
   
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

3.3 获取数组长度
Example:

 int array[] = {6,5,4,3,2,1};
 int length1 = sizeof(array)/sizeof(array[0]);
 int length2 = sizeof(array)/sizeof(*array);
 int length3 = sizeof(array)/sizeof(int);
 cout << length1 << length2 << length3;

   
   
  • 1
  • 2
  • 3
  • 4
  • 5

Output:

length1 = 6
length2 = 6
length3 = 6

   
   
  • 1
  • 2
  • 3

值得一提的是,若将第一行代码改为:int array[10] = {6,5,4,3,2,1};
则,length1、length2、length3的长度都将变为10。
(即未赋值的空余部分仍旧算在内,小伙伴要小心哦!)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值