潘鹤雕塑自我完善:比较sizeof()与strlen()

来源:百度文库 编辑:偶看新闻 时间:2024/04/29 09:46:49

比较sizeof()与strlen()

     突然发现自己又被字符数组和字符串搞糊涂了,决定还是把心得写下来,以后如果有迷糊了可以来看看,呵呵。首先我们声明了char a[5];a[0]=‘a‘;a[1]=‘b‘;a[2]=‘c‘;1. sizeof()是计算参数所占用的内存的单元数(字节数),那么sizeof(a)==5;sizeof(*a)==1;另外sizeof("abc")==4(不是3)我想这个很容易明白。2. strlen(const char *),此函数在msdn里面的解释:returns the number of characters in string, excluding the terminal NULL. No return value is reserved to indicate an error。如果直接翻译,其实我测试的结果是一致的(msdn当然还是应该相信的),问题在于:它说的不够清楚,它的意思是说返回字符串的字符个数,不包括结束符NULL(参数要求是以NULL结束的字符串,我的理解应该还包括‘\0‘结束的)。3. 我觉得正确的理解是,strlen()是返回字符个数,且,这个个数应该是遇到null或‘\0‘之前的字符个数。我们来测试:#include
#include void main ()
{   
  char a[5] ;
 a[0]=‘a‘;
 a[1]=‘c‘;
 a[2]=‘\0‘;
 a[3]=‘a‘;
 a[4]=‘b‘;
 cout < cout< cout < cout <}
结果为5243