定义
sizeof是C/C++中的一个运算符(关键字),计算对象或者类型在内存中所占用的字节数。
strlen是C语言中的库函数,计算字符串长度,不包括尾0。
引用头文件#include<stdio.h>。
库函数原型:size_t strlen(const char *s)
注:sizeof是关键字,不是函数。strlen是函数。
举例
char test[20] = “hello”;
char *test1 = “hello!”;
char test2[] = “hello!!”;
strlen(test) //5 strlen计算的是字符串的实际长度,不包括尾0,以第一个’\0’为结束符。
sizeof(test) //20 定义的char型数组,占用了20个字节。
strlen(test1) //6 trlen计算的是字符串的实际长度,不包括尾0,以第一个’\0’为结束符。
sizeof(test1) // 8 计算了指针类型所在的字节数,取决于32/64位机,32位占4字节,64位占8字节。
strlen(test2) //7 strlen计算的是字符串的实际长度,不包括尾0,以第一个’\0’为结束符。
sizeof(test2) // 8 定义的char型数组,占用了8个字节,其中包括了’\0’为结束符。
strlen的返回值为unsigned int类型,为无符号。
1.if( strlen(test) >= strlen(test2) )
2.if (strlen(test) - strlen(test2) >= 0 )
3.if( strlen(test) >= 2 )
4.if (strlen(test) - 10>= 0 )
两个表达式看起来是一样的效果。第1,3个表达式写法正确,第2,4个表达式因为strlen的返回值为unsigned int类型,为无符号,所以表达式永远为真。
如果把strlen的返回值强制转换为int,就可以消除上面这个问题。