先说头文件string.h里的strlen函数
strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。
于是我就突发奇想用strlen计算数组会发生什么,由于我是初学者想当然的认为结果就是不完全初始化的整型数组中初始化了的数组数乘以四(即3乘4),结果结果却是这样的
于是我就很疑惑,是我没有包含头文件string.h吗?
于是我又包含string.h运行了一遍,结果是这样的
结果一样那就应该不是头文件的问题
于是想了一下,灵光一闪,是不是因为我开创的是整型类的数组,那么数组的每个元素就会占用4个字节空间,但是第一个元素并不足够大来装满这个空间,只会占用一个字节剩下的三个字节就会默认为0而0就是\0字符串的结束标志,于是想到这个我就去做了一个对比
4个字节那么可以装的最大整数就是2^32-1即4294967295
我给第一个元素4294967295让它足够大来装满第一个元素的空间
到这里疑惑就解除了,正如开篇第一句话:strlen所作的仅仅是一个计数器的工作,它从内存的某个位置(可以是字符串开头,中间某个位置,甚至是某个不确定的内存区域)开始扫描,直到碰到第一个字符串结束符’\0’为止,然后返回计数器值。