美文网首页
C++ length()、size()、sizeof()三者的

C++ length()、size()、sizeof()三者的

作者: Minority | 来源:发表于2020-01-15 21:06 被阅读0次
    一、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)

    相关文章

      网友评论

          本文标题:C++ length()、size()、sizeof()三者的

          本文链接:https://www.haomeiwen.com/subject/yokxzctx.html