sizeof 与 strlen
sizeof是算符,strlen是函数
strlen函数求的是字符串的实际长度,它求得方法是从开始到遇到第一个’\0’,如果只定义不赋初值,这个结果是不定的
char aa[10]; strlen(aa)//结果不定
char aa[10] = {‘\0’}; strlen(aa) = 0;
char aa[10] = “jun” strlen(aa) = 3;
sizeof()返回的是变量声明后所占的内存数,不是实际长度
int a[10];sizeof(a)=40
eg:
void main()
{
char str[10]={“good\n”};
printf(“%d\t”,strlen(str));// strlen(str)结果是5
printf(“%d\n”,sizeof(str));// sizeof(str)结果是10,sizeof在计算数组的时候,是计算这个数组的最大长度
}
(1)字符串最后有个隐藏字符’\0’,标识字符串结束。
(2)’\n’是换行符号,只是一个字符而已。
(3)sizeof计算字符串长度时候会把最后的’\0’算进去,而strlen不会。因此sizeof计算出的长度要比strlen的长度要多一个字节
eg:
sizeof(“hello”)=6 strlen(“hello”)=5
除此之外,还要注意,当sizeof后面带一个指针的时候,实际上是计算指针的长度,一般是32位设备
指针长度是4个字节,而strlen依然是计算指针指向的长度
eg:char*a=”hello”;
sizeof(a) = 4//因为a是指针,结果是指针的大小
strlen(a) = 5//依然是5