sizeof
sizeof()不是一个函数,用来判断一个字符串或者表达式的长度等等。它的计算包括终止null字节的缓冲区长度。
strlen()
strlen的不包含终止null字节的字符串长度。
下面我们来尝试去实现自己的strlen()函数:
int strlen( const char * s )
{
char * prt = s;
int len = 0;
while( *prt++ )
i++;
return i;
}
下面我们用一个简单的例子去验证一下:
#include <stdio.h>
int strlen( const char * );
int
main( void )
{
char * s = "hello";
printf("strlen(s) = %d\n", strlen(s));
return 0;
}
int
strlen( const char * s )
{
char * ptr = s;
int len = 0;
while( *ptr++ )
i++;
return i;
}
$ gcc -o strlen strlen.c
$ ./strlen
strlen(s) = 5
注意:上面实现的strlen函数没有考虑到NULL等问题,当在写程序的时候,应该具体考虑到边界问题等等,提高代码的质量。
差别:
使用strlen是一次函数的调用,然而对于sizeof而言,并非是一次函数调用,因为缓冲区去用已知字符串进行初始化,其长度是固定不变的了,所以sizeof在程序编译的时候就计算出了缓冲区的长度。
本文详细介绍了sizeof和strlen函数的区别,通过实现自己的strlen函数并验证其正确性,同时解释了两者在处理字符串时的不同行为及注意事项。

4102

被折叠的 条评论
为什么被折叠?



