gpt4 book ai didi

c - 为什么空数组的字符串长度与数组大小不同?

转载 作者:行者123 更新时间:2023-11-30 20:45:37 24 4
gpt4 key购买 nike

在 C 中返回空字符串的长度和大小时,值不同。为什么会这样?

char b[7];

printf("String Length: %d", strlen(b)); // Returns 22
printf("String Size: %d", sizeof(b)); // Returns 7

最佳答案

这是因为数组的分配空间没有被清除。因此,在放置 char b[7]; 的堆栈上存在随机数据。strlen() 函数从内存位置 b[0] 开始搜索结束字符“\0”。

在您的情况下,找到第一个“\0”字符,第 23 个位置导致长度为 22。这个数字 22 是未定义的行为,每次运行代码时都可能不同。

如果在 b[0] 处使用“\0”初始化数组,它将返回长度 0。

关于c - 为什么空数组的字符串长度与数组大小不同?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58627814/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com