strlen()和sizeof()有什么区别
#include <stdio.h>
#include <string.h>
int main()
{
char *s="abc";
char m[]={1,2,3,4,5};
printf("%d %d %d %d\n",strlen(s),sizeof(s),strlen(m),sizeof(m));
return 0;
}
为什么strlen(m)是8,不是5.还有是不是strlen()不计'\0',sizeof()计上'\0'.char m[]={1,2,3,4,5}不会自动加上'\0',就是不以'\0'结尾吗?
为什么strlen(m)是8,不是5.还有是不是strlen()不计'\0',sizeof()计上'\0'.char m[]={1,2,3,4,5}不会自动加上'\0',就是不以'\0'结尾吗?
[解决办法]
sizeof()在编译期就由编译器计算出数值了。这也是个差别。
[解决办法]
说错了。不是静态变量,是类型明确的变量
[解决办法]
sizeof 是操作符,用于计算类型或对象所占用的空间,以 byte 为单位,在编译期完成
strlen 是函数,计算字符串的长度,遇到 '\0'结束,返回值以 byte 为单位,不含'\0';在运行期完成
[解决办法]