C++ 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。

例如:string str = "d1da";
则, cout<<str.size();

三、sizeof()运算符

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

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);

结果输出:
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

需要注意的是,如果不使用Vector作为数组进行参数传递,那么在传递数组引用是需要再传递一个数组的大小,否则在函数中无法根据首地址计算出数组大小。


四、CPP、java、python获取数组长度的方法
1、CPP
  • 获取字符数组的大小(只能用于获取字符数组长度)

#include<cstring>
cout<<strlen(a);

注意:获取字符数组长度时,使用strlen(a)和下面将要介绍的sizeof(a) / sizeof(a[0]) 得到的结果略有差别,sizeof(a) / sizeof(a[0]) 会把char数组的'\0'也算入在内。所以得到的大小会比strlen得到的大一。例如:

char a [] = "dadada";
cout<<sizeof(a) / sizeof(a[0]);      //结果为7
cout<<strlen(a);        //结果为6
  • 万能方法

sizeof(a) / sizeof(a[0]) 或者 sizeof(a) / sizeof(* a)

2、Java

注意,java获取数组长度时,length并不是一个方法

a.length

3、Python

len(a)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 技术交流QQ群:1027579432,欢迎你的加入! 1.Cpp中的字符串 C++提供了以下两种类型的字符串表示形...
    CurryCoder阅读 2,817评论 0 1
  • 题目类型 a.C++与C差异(1-18) 1.C和C++中struct有什么区别? C没有Protection行为...
    阿面a阅读 7,714评论 0 10
  • __block和__weak修饰符的区别其实是挺明显的:1.__block不管是ARC还是MRC模式下都可以使用,...
    LZM轮回阅读 3,365评论 0 6
  • 最全的iOS面试题及答案 iOS面试小贴士 ———————————————回答好下面的足够了-----------...
    zweic阅读 2,722评论 0 73
  • 最近通过一个单位后辈的朋友圈知道了简书这个东东。 有点喜欢后辈分享的那篇鸡汤,所以好奇心驱使,把简书研究了一番。此...
    羡溪子阅读 274评论 0 0