首先,明确strlen和sizeof的主要区别。
strlen:指获取字符串的长度。
sizeof:指指针所指向内容的内存占用空间。
sizeof 的输出结果始终是字节。
sizeof的输出结果大小包含结束符\0。
输出结果如下:
从前三行输出结果可见:
.1、整型在32、64位系统中占4个字节。
.2、10个整型数组占40个字节。这也说明sizeof输出结果都是按字节统计。
.3、指针所占空间为8个字节。16位系统指针占2个字节;32位系统指针占4个字节;64位系统指针占8个字节。
从第四行输出结果可见:
.1、如果初始化了内存大小,指针所指向的内容大小就是初始化所分配的大小。则sizeof的输出结果就是内容所占的内存大小为20.
.2、如果没有初始化分配内存大小。内容的大小就是内容的长度加上\0.
.3、内容遇\0结束。
从第五行输出结果可见:
.1、sizeof参数为指针时,其输出的结果不是指针所指向的内容的大小,而是指针本身的内存大小。
从后两行输出结果可见:
.1、strlen只是输出的字符串长度。不包含结束符\0。确切的说:应该是strlen输出内容(指针所指向的)的长度。显然内容长度不包含\0。