基于指针和基于数组的字符串初始化的字符串长度和大小计算的不同输出
了解结果
当创建具有相同值的基于指针的字符串 str1 和基于数组的字符串 str2 时,函数 strlen 和 sizeof 产生不同的结果。具体来说,对于声明:
char *str1 = "Sanjeev";
char str2[] = "Sanjeev";
strlen 对于 str1 和 str2 都返回 7,因为它测量字符序列的长度,不包括末尾的空终止符 (\0)。
然而,sizeof 产生不同的值:
根本区别:数据类型与内存分配
sizeof 测量数据类型的大小数据类型,而 strlen 测量字符序列的长度。对于str1,它是一个指向char的指针,因此sizeof返回指针的大小。对于 str2,它是一个字符数组,因此 sizeof 返回整个数组的大小,包括空终止符。
仔细查看
来演示更好区分,考虑:
char str2[8];
strncpy(str2, "Sanjeev", 7);
char *str1 = str2;
现在,str1和str2都指向同一个数组。它们的 strlen 值为 7,但它们的 sizeof 值不同:
这举例说明了大小评估如何取决于基础数据结构。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3