sizeof:获得字节数(包括’\0’),是运算符,不做运算,只做计算。
strlen:测试字符串长度(不包括’\0’),是函数。
sizeof 在计算数组的时候,是计算这个数组的最大长度,而不是数组内部数据的长度。
sizeof可以用类型做参数,还可以用函数做参数。strlen只能用char*做参数,且必须是以''\0''结尾的。
例:
#include<stdio.h>
#include<string.h>
int main()
{
char a[]={"china"};
printf("%d\n",sizeof(a));
printf("%d\n",strlen(a));
}
结果:
6
5
#include<stdio.h>
int main()
{
int i=1;
printf("%d,%d\n",sizeof(++i),i);
return 0;
}
结果:4,1
另外:当sizeof后面带一个指针的时候,实际上是计算指针的长度,一般32位设备
指针长度是4个字节。而strlen依然是计算指针指向的长度。