- 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 始终计算的都是字符串的长度。