C和C++中size sizeof strlen length的对比
Published on 2024-05-11 13:13 in 分类: C++学习 with niuma
分类: C++学习

C和C++中size sizeof strlen length的对比

    一、sizeof()

    sizeof 是一个操作符,它在编译期间确定的,返回的是静态大小

    它可以应用于基本类型、类类型、数组和指针等。

    例如:sizeof(int) 或 sizeof(array)。

    对于数组,sizeof 返回整个数组的大小(包括所有元素)。

    对于指针,sizeof 返回指针本身的大小(通常取决于平台和编译器,例如在32位系统上通常是4字节,在64位系统上通常是8字节)。

    int a = 0;  
    std::cout << sizeof(a) << std::endl;       // 输出 int 类型的大小  
    int arr[10];  
    std::cout << sizeof(arr) << std::endl;     // 输出整个数组的大小  
    int* ptr = &a;  
    std::cout << sizeof(ptr) << std::endl;     // 输出指针的大小
    

    二、strlen()

    strlen 是一个函数,定义在 < cstring > 或 < string.h > 头文件中。

    它用于获取C风格字符串(以null结尾的字符数组)的长度(不包括null终止符)。

    strlen 在运行时计算字符串长度,通过遍历字符串直到遇到null字符。

    const char* cstr = "Hello";  
    std::cout << strlen(cstr) << std::endl;   // 输出 5
    

    三、size

    size() 通常是一个成员函数,用于获取容器(如 vector、string、list 等)中的元素数量。size() 在运行时返回结果
    它返回的是容器中元素的个数,而不是容器本身在内存中的大小(以字节为单位)。

    std::string str = "Hello";  
    std::cout << str.size() << std::endl;     // 输出 5  
    std::vector<int> vec = {1, 2, 3, 4, 5};  
    std::cout << vec.size() << std::endl;     // 输出 5
    

    四、length()

    length() 通常是 std::string 类的一个成员函数,与 size() 功能相同,返回字符串中字符的个数。

    在所有标准C++库中,std::string 的 length() 和 size() 成员函数具有相同的行为。

    string str = "Hello";  
    cout << str.length() << std::endl;   // 输出 5  
    // 注意:str.length() 和 str.size() 是等价的
    

    五、总结:

    • sizeof() 用于在编译时确定类型或对象的大小(以字节为单位)。
    • strlen() 用于在运行时获取C风格字符串的长度(不包括null终止符)。
    • size() 和 length() 通常作为容器(如 std::string)的成员函数,用于在运行时获取容器中元素的数量。在 std::string 的情况下,size() 和 length() 是等价的。
    posted @   baobaobashi  阅读(68)  评论(0编辑  收藏  举报
    相关博文:
    阅读排行:
    · DeepSeek 开源周回顾「GitHub 热点速览」
    · 记一次.NET内存居高不下排查解决与启示
    · 物流快递公司核心技术能力-地址解析分单基础技术分享
    · .NET 10首个预览版发布:重大改进与新特性概览!
    · .NET10 - 预览版1新功能体验(一)
    点击右上角即可分享
    微信分享提示