随笔 - 505  文章 - 1034  trackbacks - 0
<2008年4月>
303112345
6789101112
13141516171819
20212223242526
27282930123
45678910


子曾经曰过:编程无他,唯手熟尔!

常用链接

留言簿(94)

随笔分类(649)

随笔档案(505)

相册

BCB

Crytek

  • crymod
  • Crytek's Offical Modding Portal

Game Industry

OGRE

other

Programmers

Qt

WOW Stuff

搜索

  •  

积分与排名

  • 积分 - 905125
  • 排名 - 14

最新随笔

最新评论

阅读排行榜

评论排行榜

知识分为两部分,一部分记在脑子里,一部分记在博客上 ^_^



strlen 不包括最后的结束符 '\0'


int _tmain(int argc, _TCHAR* argv[])
{
    
const char* szName = "fuck";
    
const char* szNULL = "";

    
char array[] = {0};
    
char name[]  = "bitch";

    
const char* szChineseName = "北京号";

    unsigned 
int IntArray[30= {0};

    
char blankName[32= "";

    std::cout 
<< "strlen(szName): " << strlen(szName) << "\n" 
        
<< "strlen(szNULL): " << strlen(szNULL) << "\n"
        
<< "sizeof(szName): " << sizeof(szName) << "\n"
        
<< "sizeof(szNULL): " << sizeof(szNULL) << "\n" 
        
<< "strlen(array): "  << strlen(array)  << "\n"    
        
<< "strlen(name): "   << strlen(name)  << "\n"
        
<< "sizeof(array): "  << sizeof(array)  << "\n" 
        
<< "sizeof(name): "   << sizeof(name)  << "\n" 
        
<< "strlen(szChineseName): "<< strlen(szChineseName) << "\n" 
        
<< "sizeof(IntArray): " << sizeof(IntArray) << "\n"
        
<< "strlen(blankName)" << strlen(blankName) << "\n"
        
<< "sizeof(blankName)" << sizeof(blankName) << "\n"
        
<< std::endl;

    
return 0;
}

输出:
strlen(szName): 4
strlen(szNULL): 
0
sizeof(szName): 4
sizeof(szNULL): 4
strlen(array): 
0
strlen(name): 
5
sizeof(array): 1
sizeof(name): 6
strlen(szChineseName): 
6
sizeof(IntArray): 120
strlen(blankName)
0
sizeof(blankName)32

请按任意键继续. . .

2011-02-16  这么多年过去了哈!容易忘记是理解不深刻!看完林锐博士的《高质量程序设计指南》7.3字符数组、字符指针和字符串后,就不会搞错了!
posted on 2007-08-05 01:05 七星重剑 阅读(292) 评论(2)  编辑 收藏 引用 所属分类: PL--c/c++

FeedBack:
# re: strlen与sizeof,这玩意儿总是忘了,记在这儿 2007-10-07 14:10 ThomasLiu83
大哥,程序有点问题,不要误导大家啊..
<< "sizeof(szChineseName): "<< strlen(szChineseName) << "\n"[这一行有误!!!!!]
那个szChineseName的输出牛头不对马嘴啊..:-)
因为中文表示占两个字节,所以strlen返回的应该是汉字个数的2倍,但是sizeof(szChineseName)还应该是4,一个指针!!

  回复  更多评论
  
# re: strlen与sizeof,这玩意儿总是忘了,记在这儿 2007-10-07 19:05 重剑
@ThomasLiu83
已经改好了,多谢提醒啊!手误!
  回复  更多评论
  

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   博问   Chat2DB   管理