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 @ 2024-05-11 13:13  baobaobashi  阅读(23)  评论(0编辑  收藏  举报