sizeof和strlen的区别是什么?举出例子说明
sizeof和strlen都用于获取数据的大小,但它们的作用和计算方式不同。
区别:
1、sizeof(计算数据类型或变量的大小)
- 计算的是变量或类型所占的总字节数,包括
char数组的\0终止符。 - 编译时确定,与内容无关。
- 适用于任何数据类型(基本类型、数组、结构体等)。
2、strlen(计算字符串的长度)
- 计算的是字符串的实际长度(不包括
\0)。 - 运行时确定,仅适用于
char类型的字符串。 - 需要遍历字符串直到
\0终止符。
示例:
#include <stdio.h>
#include <string.h>
int main() {
char str1[] = "Hello"; // 包含 'H' 'e' 'l' 'l' 'o' '\0'
char *str2 = "Hello"; // 指针指向常量字符串
printf("sizeof(str1) = %zu\n", sizeof(str1)); // 6 (包含 '\0')
printf("strlen(str1) = %zu\n", strlen(str1)); // 5 (不包含 '\0')
printf("sizeof(str2) = %zu\n", sizeof(str2)); // 8 (指针大小, 64位系统)
printf("strlen(str2) = %zu\n", strlen(str2)); // 5 (字符串内容长度)
return 0;
}

浙公网安备 33010602011771号