- sizeof 是 C 语言内置的操作符关键字,而 strlen 是 C 语言库函数;
- sizeof 仅用于计算数据类型的大小或者变量的大小,而 strlen 只能以结尾为' \0 '的字符串作为参数;
- 编译器在编译时就计算出了 sizeof 的结果,而 strlen 必须在运行时才能计算出来;
- sizeof 计算数据类型或变量会占用内存的大小,strlen 计算字符串实际长度。
int main(void)
{
char str[50] = "Linux app strlen test!";
char *ptr = str;
printf("sizeof: %ld\n", sizeof(str));
printf("strlen: %ld\n", strlen(str));
puts("~~~~~~~~~~");
printf("sizeof: %ld\n", sizeof(ptr));
printf("strlen: %ld\n", strlen(ptr));
exit(0);
}
结果:
从打印信息可知,第一个
sizeof
计算的是数组变量
str
的大小,所以等于
50
;而第二个
sizeof
计算的是指针变量 ptr
的大小,这里等于
8
个字节,因为这里笔者是在
Ubuntu 64
位系统下进行的测试,所以指针占 用的内存大小就等于 8
个字节;而
strlen
始终计算的都是字符串的长度。