首页 > 编程语言 >C和C++中size sizeof strlen length的对比

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

时间:2024-05-11 13:21:24浏览次数:22  
标签:std string C++ length sizeof strlen size

一、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() 是等价的。

标签:std,string,C++,length,sizeof,strlen,size
From: https://www.cnblogs.com/baobaobashi/p/18186301

相关文章

  • gcov - 标准c/c++代码覆盖率测试工具+lcov - GCC测试覆盖率的前端图形展示工具+gprof
    1、advent-calendar-of-circuits-2020-一个月每天用KiCad设计一个PCB项目GregoryDavill是来自澳大利亚的一个技术牛人,在开源硬件领域非常有名且活跃。他在2020年12月坚持每一天设计一个电路板,用KiCad完成电路设计到PCB的布局布线完成,这便是advent-calendar-of-circuits-......
  • C++中的string
    一、定义和初始化string1、默认初始化:std::stringstr;//str是一个空字符串2、使用字面值初始化:std::stringstr1="Hello,World!";//str1包含字符串"Hello,World!"3、使用字符数组初始化:chararr[]="Hello,World!";std::stringstr3(arr);//str3包含字......
  • 【C语言】---- sizeof关键字计算变量的大小
    简介sizeof是C语言中一个非常重要的关键字,它用于计算变量、类型和数组的大小。sizeof的作用是获取变量或数据类型在内存中所占用的字节数。在C语言中,所有的数据都有一个确定的大小,这个大小取决于数据类型。例如,一个int类型的数据在大多数系统中占用4个字节,而一个char......
  • C++ 类的继承(Inheritance)
    一、继承(Inheritance)C++有一个很好的性质称为inheritance(继承),就是声明一个class(derivedclass),把另一个或多个class(baseclass)的所有内容(包括datamembers和memberfunction)统统继承下来(有无存取权限是另一回事)。如果直接继承自一个baseclass,称为单一继承;如果直接继承自一......
  • C++基础知识
    单行注释//多行注释/**/常量#define常量名常量值const数据类型常量名=常量值关键字不要和变量或常量重名数据类型短整型(2字节)-整型(4字节)-长整型(4字节)-长长整型(8字节)short<int<=long<=longlong实型float(4)-double(8)科学计数法3e23*10^23e-23*......
  • C/C++ 泛型 -- 继承与多态
    【1】继承与多态-- 多态在模板中的应用#include<iostream>usingnamespacestd;namespace_nmsp1{//多态//人类classHuman{public:virtualvoideat(){cout<<"人类以吃米饭和面食为主!"<<endl;......
  • C++ 结构体
    结构体结构体(struct),是一种用户自定义复合数据类型,可以包含不同类型的不同成员语法:    structStudent{stringname;intage;stringsex;};Studentstu;stu={"张三",20,"男"};cout<<"名字:"<<stu.n......
  • 传统C++回顾
    主要参考菜鸟教程,用于回忆当时没有好好学习的C++98Vector的学习#include<iostream>#include<vector>usingnamespacestd;intmain(){vector<int>myVector;myVector.push_back(3);myVector.push_back(7);myVector.push_back(11);myVector.push_back(5......
  • C++ const常量指针
    const常量指针const是C++关键字,译为常量,const指针即为常量指针。分为三类指向const的指针const指针指向const的const指针指向const的指针表示指向区域的数据是不可变的,但是可以更换指向语法(将const卸载*之前):const数据类型*指针名数据类型const*指针名......
  • C++ 数组元素操作
    数组元素的移除核心思路:创建一个新的内存空间存储移除后的数组,再将原数组delete释放,再将指针指向新数组。cout<<"-----------------------------数组元素的移除-------------------------"<<endl;//cout<<deleteArrByIndex(0,arr11)<<endl;//示例数组int*p......