首先,strlen 是函数,sizeof 是运算操作符,二者得到的结果类型为 size_t,即 unsigned int 类型。大部分编译程序在编译的时候就把 sizeof 计算过了,而 strlen 的结果要在运行的时候才能计算出来。
对于以下语句:
char *str1 = "asdfgh"; char str2[] = "asdfgh"; char str3[8] = {'a', 's', 'd'}; char str4[] = "as df";
执行结果是:
sizeof(str1) = 4; strlen(str1) = 6; sizeof(str2) = 7; strlen(str2) = 6; sizeof(str3) = 8; strlen(str3) = 3; sizeof(str4) = 6; strlen(str4) = 2;
str1是字符指针变量,sizeof 获得的是该指针所占的地址空间,32 位操作系统对应 4 字节,所以结果是 4;strlen 返回的是该字符串的长度,遇到