基于指针和基于数组的字符串初始化的字符串长度和大小计算的不同输出
理解结果
创建基于指针的字符串 str1 和基于数组的字符串 str2 具有相同的值,函数 strlen 和 sizeof 会产生不同的结果。具体来说,对于声明:
<code class="c">char *str1 = "Sanjeev"; char str2[] = "Sanjeev";</code>
strlen 对于 str1 和 str2 都返回 7,因为它测量字符序列的长度,不包括末尾的空终止符 ( )。
然而,sizeof 产生不同的值:
根本区别:数据类型与内存Allocation
sizeof 测量数据类型的大小,而 strlen 测量字符序列的长度。对于str1,它是一个指向char的指针,因此sizeof返回指针的大小。对于 str2,它是一个字符数组,因此 sizeof 返回整个数组的大小,包括空终止符。
仔细看看
来演示更好区分,考虑:
<code class="c">char str2[8]; strncpy(str2, "Sanjeev", 7); char *str1 = str2;</code>
现在,str1 和 str2 都指向同一个数组。它们的 strlen 值为 7,但它们的 sizeof 值不同:
这说明了大小评估如何取决于底层数据结构。
以上是为什么 C 中基于指针和基于数组的字符串的'strlen”和'sizeof”产生不同的结果?的详细内容。更多信息请关注PHP中文网其他相关文章!