1 sizeof是操作符,而strlen是库函数;
2 sizeof的参数可以为任意变量或类型,而strlen必须以char*做参数,且字符串必须以‘/0’结尾;
3 数组名用作sizeof参数时不会退化,而用作strlen参数时就会退化成指针;
4 大部分编译器在编译期计算sizeof的值,所以其结果可以用作常量,例如可以定义数组的维数,而strlen一定要到运行期才会被计算;
5 sizeof的参数如果是变量名,可以不加括号,因为其是运算符不是函数,而strlen必须加括号;
6 在计算字符串的长度时strlen(str)+1==sizeof(str)。
2 sizeof的参数可以为任意变量或类型,而strlen必须以char*做参数,且字符串必须以‘/0’结尾;
3 数组名用作sizeof参数时不会退化,而用作strlen参数时就会退化成指针;
4 大部分编译器在编译期计算sizeof的值,所以其结果可以用作常量,例如可以定义数组的维数,而strlen一定要到运行期才会被计算;
5 sizeof的参数如果是变量名,可以不加括号,因为其是运算符不是函数,而strlen必须加括号;
6 在计算字符串的长度时strlen(str)+1==sizeof(str)。
本文详细对比了sizeof操作符与strlen函数的区别,包括它们的应用场景、参数类型、计算时机等,并指出sizeof可用于计算变量或类型的大小,而strlen专门用于计算以空字符结尾的字符串长度。
524

被折叠的 条评论
为什么被折叠?



