yuyi
知不可乎骤得,托遗响于悲风
strlen
和sizeof
是C和C++中常用的两个操作,但它们用于不同的目的:
strlen
strlen
函数用于计算字符串的长度,不包括终止字符\0
。<cstring>
或<string.h>
头文件中定义。strlen
只能用于以null结尾的字符数组(C风格字符串),它通过遍历字符串直到找到\0
来计算字符串的长度。sizeof
sizeof
是一个编译时操作符,用于计算类型或变量占用的字节数。int
、float
)、数组、结构体等,并且结果在编译时就已确定。sizeof
返回的是整个数组占用的内存大小,而不是数组中存储的字符串的长度。#include <iostream>
#include <cstring> // 对于C++,包含strlen
int main() {
char str[] = "hello"; // 字符串"hello"实际占用6个字节:'h', 'e', 'l', 'l', 'o', '\0'
std::cout << "strlen(str) = " << strlen(str) << std::endl; // 输出字符串长度5,不包括'\0'
std::cout << "sizeof(str) = " << sizeof(str) << std::endl; // 输出数组总大小6,包括'\0'
return 0;
}
在这个示例中:
strlen(str)
计算的是字符串"hello"的长度,即5,因为它不计算终止字符\0
。sizeof(str)
计算的是数组str
的总大小,即6个字节:5个字母加上一个终止字符\0
。这个例子清晰地展示了strlen
和sizeof
的区别:strlen
用于计算字符串的实际长度(不包括\0
),而sizeof
用于计算变量或类型所占用的内存大小。