关于strlen与sizeof的区别

来源:互联网 发布:电脑手机码字软件 编辑:程序博客网 时间:2024/05/16 05:52

假设有以下代码:

void main( void ){char ch[20] = "1162233649";char *pch   = "1162233649";int  aa[]= {1,2,3,4,5};cout<<strlen(ch)<<endl;cout<<sizeof(ch)<<endl;cout<<strlen(pch)<<endl;cout<<sizeof(pch)<<endl;cout<<sizeof(aa)<<endl;}

运行程序,输出结果依次为 10、20、10、4、20.

分析:strlen函数测量字符串数组时,返回实际存储的字符长度,而不是为数组分配的空间大小,sizeof运算符正好相反,当它对字符串数组ch进行操作时,它返回为数组分配的空间大小。因此,前两个输出语句结果分别是10、20。pch为字符串指针,因此也可以用strlen函数测量其指向的字符串的实际长度,而pch本身是一个指针,指针变量本身占用4个字节的存储空间,因此使用sizeof操作符得到pch的大小为4.最后,使用sizeof操作符得到整型数组aa[ ]的大小为5*4字节,即20.