sizeof
和 strlen
是 C 和 C++ 编程语言中常用的两个运算符/函数,它们的功能和用途有很大不同:
sizeof
- 类型:
sizeof
是一个运算符。 - 用法:用于获取数据类型或变量所占的字节数。
- 计算对象:可以用于任何数据类型,包括基本数据类型(如
int
,char
,float
等)、结构体、数组和指针等。 - 编译时计算:
sizeof
在编译时就计算出结果,因此它的值对编译器是确定的。 - 示例:
int a = 10; printf("%zu\n", sizeof(a)); // 输出 int 类型所占的字节数 printf("%zu\n", sizeof(int)); // 输出 int 类型所占的字节数 char arr[10]; printf("%zu\n", sizeof(arr)); // 输出数组 arr 占用的字节数
strlen
- 类型:
strlen
是一个函数。 - 用法:用于计算 C 字符串的长度,即字符串中字符的数量,不包括结束的空字符(
'\0'
)。 - 计算对象:只能用于类型为
char*
的 C 字符串。 - 运行时计算:
strlen
在运行时计算字符串的长度,所以在程序运行时会遍历字符数组,直到遇到空字符。 - 示例:
char str[] = "Hello, World!"; printf("%zu\n", strlen(str)); // 输出 13,因为字符串中有 13 个字符
总结
sizeof
用于获取类型或变量占用的内存大小,而strlen
用于计算 C 字符串的长度(不包括空字符)。sizeof
是编译时运算,而strlen
是运行时运算。