📜  C++ 中的 sizeof() vs strlen() vs size()(1)

📅  最后修改于: 2023-12-03 14:59:48.379000             🧑  作者: Mango

C++中的sizeof() vs strlen() vs size()

sizeof()

sizeof()是C++中的一个操作符,用于获取一个变量或类型所占用的内存大小。以下是使用sizeof()的一些例子:

int num = 42;
std::cout << sizeof(num) << std::endl;   // 输出4,因为int类型占用4个字节

double pi = 3.14;
std::cout << sizeof(pi) << std::endl;    // 输出8,因为double类型占用8个字节

struct Person {
    int age;
    char name[10];
};
Person p;
std::cout << sizeof(p) << std::endl;     // 输出14,因为Person类型包含一个int和一个长度为10的char数组,共占用14个字节

在上面的例子中,sizeof()返回的是一个size_t类型的值,表示占用的字节数。

strlen()

strlen()是C++中的一个函数,用于计算一个C风格字符串的长度(不包括末尾的空字符\0)。以下是使用strlen()的一些例子:

char str1[] = "hello";
std::cout << strlen(str1) << std::endl;  // 输出5,因为字符串长度为5

char str2[] = {'h', 'e', 'l', 'l', 'o'}; // 注意这里没有末尾的空字符
std::cout << strlen(str2) << std::endl;  // 结果不确定,因为str2并不是以空字符结尾的C字符串

在上面的例子中,strlen()返回的是一个size_t类型的值,表示字符串的长度。

需要注意的是,strlen()只适用于C风格字符串,也就是以空字符\0结尾的字符数组。如果一个字符数组没有以空字符结尾,则调用strlen()会导致未定义行为。

size()

size()是C++标准库中容器类型(如std::vectorstd::string)的一个成员函数,用于获取容器中元素的数量。以下是使用size()的一些例子:

std::vector<int> vec = {1, 2, 3, 4};
std::cout << vec.size() << std::endl;   // 输出4,因为容器中有4个元素

std::string str = "hello";
std::cout << str.size() << std::endl;   // 输出5,因为字符串长度为5

在上面的例子中,size()返回的是一个size_t类型的值,表示容器中元素的数量。

需要注意的是,如果一个容器是空的,则调用size()会返回0。