EazyChange

导航

 

strlen()遇到\0则停止,计算\0之前的字符个数,而sizeof计算整体的字节大小。

int main()
{
    char a[] = "123";
    char b[] = { '1', '2', '3' };
    char* c = "123";

    cout << sizeof(a) << endl;//4
    cout << strlen(a) << endl;//3
    cout << sizeof(b) << endl;//3
    cout << strlen(b) << endl;//错误:15
    cout << sizeof(c) << endl;//4
    cout << strlen(c) << endl;//3

    return 0;
}

其中a和c不用说,都是字符串。

而b是属于字符串数组!是数组。用sizeof计算大小。由于是根据元素个数来初始化的,所以是3。

但是strlen时,由于分配时没有\0,所以只能向后找,答案不是注释中的15,这个结果是不一定的,看内存单元中什么时候遇到\0就停止了。

posted on 2016-02-19 16:40  EazyChange  阅读(311)  评论(0)    收藏  举报