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';在运行期完成
[解决办法]
sizeof测量的是占了多少内存,strlen测试的是从一个开始位置到'\0'的字节数,你说的不是5是8和内存布局有关了,
看看这个
http://blog.csdn.net/koches/article/details/7526377
[解决办法]
http://blog.csdn.net/z1179675084/article/details/12951323
[解决办法]
http://bbs.csdn.net/topics/390618929类似的问题
[解决办法]
千真万确,出家人不打诳语。。。。。。